XDU Problem 1255 - 数列游戏
2013-12-22 00:41
148 查看
使用优先队列:
优先队列简介:
http://www.cplusplus.com/reference/stl/ 所有STL容器和STL
algorithm的所有函数。
优先队列容器与队列一样,只能从队尾插入元素,从队首删除元素。但是它有一个特性,就是队列中最大的元素总是位于队首,所以出队时,并非按照先进先出的原则进行,而是将当前队列中最大的元素出队。这点类似于给队列里的元素进行了由大到小的顺序排序。元素的比较规则默认按元素值由大到小排序,可以重载“<”操作符来重新定义比较规则,不能重载“>”操作符。
使用优先队列时也需要声明头文件“#include <queue>”
优先队列是用heap完成的,支持O(log n)的入队和出队操作;
STL优先队列priority_queue<int,vector<int>,greater<int>
>中greater建立的顺序是从小到大排列,而less则是从大到小排列。另外,greater<int> >最后的应该是> >中间必须有一个空格,不然编译不通过。
操作函数:
Push():入队,即插入元素
Pop():出队,即删除元素
top():读取队尾元素(没有队列中的front()和back())
Empty():判断队列是否为空
Size():队列当前大小
自定义优先级
XDU Problem 1255 - 数列游戏
优先队列简介:
http://www.cplusplus.com/reference/stl/ 所有STL容器和STL
algorithm的所有函数。
优先队列容器与队列一样,只能从队尾插入元素,从队首删除元素。但是它有一个特性,就是队列中最大的元素总是位于队首,所以出队时,并非按照先进先出的原则进行,而是将当前队列中最大的元素出队。这点类似于给队列里的元素进行了由大到小的顺序排序。元素的比较规则默认按元素值由大到小排序,可以重载“<”操作符来重新定义比较规则,不能重载“>”操作符。
使用优先队列时也需要声明头文件“#include <queue>”
优先队列是用heap完成的,支持O(log n)的入队和出队操作;
STL优先队列priority_queue<int,vector<int>,greater<int>
>中greater建立的顺序是从小到大排列,而less则是从大到小排列。另外,greater<int> >最后的应该是> >中间必须有一个空格,不然编译不通过。
操作函数:
Push():入队,即插入元素
Pop():出队,即删除元素
top():读取队尾元素(没有队列中的front()和back())
Empty():判断队列是否为空
Size():队列当前大小
自定义优先级
struct node { friend bool operator< (node n1, node n2) { return n1.priority < n2.priority; } int priority; int value; };
XDU Problem 1255 - 数列游戏
#include<cstdio> #include<iostream> #include<cstring> #include<queue> using namespace std; int main() { //freopen("data.txt","r",stdin); priority_queue<double,vector<double>,greater<double> > myqueue; int cases; cin>>cases; while(cases--) { int num; cin>>num; for(int i=0;i<num;i++) { double temp; cin>>temp; myqueue.push(temp); } while(myqueue.size()>2) { double temp1=myqueue.top();myqueue.pop(); double temp2=myqueue.top();myqueue.pop(); myqueue.push(temp1+(temp2-temp1)/2); } double ans1=myqueue.top();myqueue.pop(); double ans2=myqueue.top();myqueue.pop(); printf("%.2f\n",ans1+(ans2-ans1)/2); } return 0; }
相关文章推荐
- 编程中犯的错误
- Git 常用指令详解
- php分页显示
- Hibernate的generator属性
- 射频模拟电路学习笔记——(绪论)
- 用户为什么离开你?
- 制作mipsel 交叉工具链
- asp.net mvc 2.0详细笔记__01__新建项目
- Php学习记录
- 解析Android消息处理机制:Handler/Thread/Looper & MessageQueue
- Android Animation之transition
- poj 1061 青蛙的约会
- Makefile系列之二 : 命令
- spring hibernate c3p0 mysql 配置
- websocket在.net4.5中实现的简单demo
- Android listView
- 一些算法的MapReduce实现——矩阵分块乘法计算(1)
- Erlang实现的简易HTTP服务器
- Visual Studio 交换等号两边代码
- 重新安装eclipse需要注意