首页 > 其他 > 详细

[CF]1526C2 Potions (Hard Version) 优先队列、贪心

时间:2021-06-15 16:07:04      阅读:27      评论:0      收藏:0      [点我收藏+]

题目链接
题意:1~n中 从左到右选点 使得它们的和大于等于0 输出最多能选多少个点。
思路:
1.只要喝不死就往死里喝。
2.如果第i瓶会喝死 跟之前喝过的药剂比 如果比 毒性最大的药 毒性小 那就更新一下最小值。这样结果不会更糟。

#include <iostream>
#include <algorithm>
#include <queue>
#include <vector>
using namespace std;
 typedef long long LL;
int main()
{
   int n;scanf("%d",&n);
   priority_queue <LL,vector<LL>,greater<LL>>q;
   LL sum=0;int num=0;
   for(int i=1;i<=n;i++)
   {
       LL x;scanf("%lld",&x);
       if(sum+x>=0)
       {
           sum+=x;
           num++;
           q.push(x);
       }
       else if(q.size()&&q.top()<x)
       {
           sum+=x-q.top();
           q.pop();
           q.push(x);        
       }
   }
   printf("%d\n",num);
   return 0;
}

[CF]1526C2 Potions (Hard Version) 优先队列、贪心

原文:https://www.cnblogs.com/liv-vil/p/14885043.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!