我是靠谱客的博主 贪玩冥王星,这篇文章主要介绍codeforces 1526 C1. C2. Potions (Easy and Hard Version)(1500,1600,带悔贪心,优先队列),现在分享给大家,希望可以做个参考。

链接:

https://codeforces.com/problemset/problem/1526/C1     https://codeforces.com/problemset/problem/1526/C2

题意:

按顺序从左往右嗑药,保证hp>=0,尽可能嗑最多的药;

题解:

加HP的药一定要喝,扣HP的先喝,但要用个东西(优先队列)存起来,等把HP喝成复数时,把扣的最狠的那瓶药吐出来;

题解:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

int main()
{
	ll n;
	cin >> n;
	ll ans = 0;
	ll sum = 0;
	priority_queue<ll,vector<ll>,less<ll>>s;
	while (n--)
	{
		ll x;
		cin >> x;
		sum += x;
		ans++;
		if (x < 0);
		{
			s.push(-x);
		}
		if (sum < 0)
		{
			ans--;
			sum += s.top();
			s.pop();
		}
	}
	cout << ans << endl;
}

最后

以上就是贪玩冥王星最近收集整理的关于codeforces 1526 C1. C2. Potions (Easy and Hard Version)(1500,1600,带悔贪心,优先队列)的全部内容,更多相关codeforces内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部