14级组队赛第一场3319 A simple water problem

来源:互联网 发布:ubnt设置网络唤醒 编辑:程序博客网 时间:2024/05/18 13:30

题目意思:

  Dragon很喜欢看比赛,他有时候会给选手打分,1分或0分,每看一场比赛他都会打分,最后他会留下一张分数的纸,让你去推断Dragon至少看了几场比赛

 思路:

  优先队列,每次取最大的那俩,取他们的较小的那个,然后用大的减去小的,再加入队列,最后当队列中的元素个数小于2时,把里面的元素加上,最后输出,里面没有元素的话,就不用去加了

CODE

#include<iostream>#include<string.h>#include<algorithm>#include<stdio.h>#include<queue>using namespace std;int main(){     int t;     int io = 1;     scanf("%d",&t);     while(t--)     {         priority_queue<int,vector<int > ,less<int> > q;         int n;         scanf("%d",&n);         long long ans = 0;         int i;         for(i = 0; i < n; i++)         {             int b;             scanf("%d",&b);             q.push(b);         }         while(q.size()>=2)         {             int mx, mn;             mx = q.top();             q.pop();             mn = q.top();             q.pop();             ans+=mn;             mx = mx-mn;             if(mx > 0)                q.push(mx);         }         if(q.size() == 1)         {             ans+=q.top();         }         printf("Case #%d: %lld\n",io++,ans);     }    return 0;} 


0 0
原创粉丝点击