[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)