堆的实现 2196. Nuanran's Idol II
来源:互联网 发布:post请求参数传递数组 编辑:程序博客网 时间:2024/05/02 02:19
堆用数组实现,时间复杂度为O(logn),如果进一本书就排序一次的话时间复杂度很高。
You have known that nuanran is a loyal fan of Kelly from the last contest. For this reason, nuanran is interested in collecting pictures of Kelly. Of course, he doesn't like each picture equally. So he gives each picture a score which is a positive integer. And the larger the score is, the more he likes that picture. Nuanran often goes to buy new pictures in some shops to increase his picture collection.
Sometimes nuanran's friends ask him for Kelly's picture and he will choose the picture having the smallest score. Because he has many pictures, this is a boring task. Can you help him again?
Input
For each test case, the first line gives an integer n (1 ≤ n ≤ 100000). Then n lines follow, each line has one of the following two formats.
The input is terminated when n=0.
Output
For each giving test case, you should output the score of the picture nuanran gives to his friends.
Sample Input
8B 20B 10GB 9GB 100B 25G0
Sample Output
10920
#include<iostream>#include<cstring>using namespace std;int a[100001],len=0;//len为堆的尾部int leftchild(int n){return n*2;}int rightchild(int n){return n*2+1;}int parent(int n){return n/2;}int gettop(){return a[1];}void heapfy(int t){int l,r,m;l=leftchild(t);r=rightchild(t);m=t;if(l<len&&a[m]>a[l])m=l;if(r<len&&a[m]>a[r])m=r;//寻找最小值下标if(m!=t){swap(a[t],a[m]);heapfy(m);}return;}void insert(int t){a[len]=t;int p=parent(len);int q=len;while(a[p]>a[q]&&p>0){swap(a[p],a[q]);q=p;p=parent(p);}len++;return ;}void pop(){if(len==0)return;len--;//cout<<a[1];a[1]=a[len];a[len]=0;heapfy(1);return;}int main(){int n,s;char c;while(cin>>n&&n){len=1;memset(a,-1,sizeof(a));while(n--){cin>>c;if(c=='B'){cin>>s;insert(s);}else{cout<<gettop()<<endl;pop();}}}return 0;}
- 堆的实现 2196. Nuanran's Idol II
- Nuanran's Idol II
- toj 2196 Nuanran's Idol II multiset应用
- toj 2190 Nuanran's Idol
- Leetcode 细节实现 Pascal's Triangle II
- FAST ESP和Autonomy IDOL Server的比较
- Autonomy IDOL
- on the IDOL route to be a researchere in student's days
- 实时操作系统uC/0S II下TCP/IP协议栈的实现
- 实时操作系统uC/0S II下TCP/IP协议栈的实现
- 实时操作系统uC/0S II下TCP/IP协议栈的实现
- 堆结构的实现
- 最小堆的实现
- 最大堆的实现
- 堆排序的实现
- 最大堆的实现
- 最小堆的实现
- 堆排序的实现
- request 获取各种路径
- java基本类型占位和
- Ubuntu 12.04更新源
- 改变世界的17个等式
- 远程服务器返回错误: (500) 内部服务器错误
- 堆的实现 2196. Nuanran's Idol II
- CRAN Task View: Time Series Analysis
- 滤波器设计指标
- 分数拆分( Fractions Again, UVA 10976)-ACM
- 编程之美: 最大公约数
- C\C++控制台颜色设置类
- leetcode 之 Unique Paths
- 操作系统看书笔记
- 数字信号处理中各种频率关系