V
来源:互联网 发布:张毅琉璃淘宝 编辑:程序博客网 时间:2024/04/26 07:56
扔石头只扔第奇数个石头肉过两个石头在同一位置就扔远的那个
这也是优先队列的问题先优先排序位置然后排序大小
扔过的石头还有再次入列指导最后没有石头为止
123456789101112131415161718192021222324252627282930313233343536373839404142
#include<cstdio>#include<queue>struct node{int l;int f;bool friend operator < (node a,node b){if(a.l==b.l)return a.f>b.f;return a.l>b.l;}//按照优先排序的方法}a;using namespace std;int main(){priority_queue<node> cnt;int T;scanf("%d",&T);while(T--){int n;scanf("%d",&n);int i=1;for(i=1;i<=n;i++){scanf("%d%d",&a.l,&a.f);cnt.push(a);}int sum=0;i=1;while(!cnt.empty()){a=cnt.top();if(i&1){//判断这是石头是第几个石头sum=a.l+a.f;a.l=a.l+a.f;cnt.pop();cnt.push(a);}else{cnt.pop();}i++;}printf("%d\n",sum);}}
0 0