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

Posted livvil

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[CF]1526C2 Potions (Hard Version) 优先队列贪心相关的知识,希望对你有一定的参考价值。

题目链接
题意: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) 优先队列贪心的主要内容,如果未能解决你的问题,请参考以下文章

C2. Potions (Hard Version)—— Codeforces Round #723 (Div. 2)

C2. Potions (Hard Version)—— Codeforces Round #723 (Div. 2)

cf1526 C Potions

题解CF1165F2 Microtransactions (hard version)

CF660C Hard Process

CF367C. Hard problem