CF1526C2
与简单版的思路完全一致,只需要改一下范围。
可以去看我简单版本的博客。
题目简化和分析:
给您一个数组,在其中选择若干个数使得:
- 任意前缀和 \(\ge 0\)
- 数量尽可能的大
我们可以使用贪心策略,策略如下:
- 如果当前数为非负,必喝。
- 而毒药尽可能的多喝,如果喝没了,就把最小的吐了。
以上操作可以采用优先队列去优化。
重载运算符
struct node{
ll v;
bool operator <(const node &x)const{
return x.v<v;
}
};
priority_queue<node> q;
既然理解了思路可以动手了。
Solution:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
const int N=2e5+50;
const int M=1e5+50;
inline ll read(){
ll x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x*f;
}
ll n;
ll a[N];
struct node{
ll v;
bool operator <(const node &x)const{
return x.v<v;
}
};
priority_queue<node> q;
int main()
{
n=read();
for(int i=1;i<=n;++i) a[i]=read();
ll ans=n,res=1,cnt=0;
while(res<=n)
{
cnt+=a[res];
q.push((node){a[res]});
if(cnt<0){
node tmp=q.top();
cnt-=tmp.v;
q.pop();
--ans;
}
++res;
}
printf("%lld\n",ans);
return 0;
}
随机推荐
- 【python基础】文件-初识文件
文本文件可存储的数据量是非常多的.每当需要分析或修改存储在文件中的信息时,首先就是读取文件到内存中,为此可以一次性读取文件的全部内容,也可以以每次一行的方式逐步读取. 1.读取文件 1.1读取整个文件 ...
- celery笔记七之周期/定时任务及crontab定义
本文首发于公众号:Hunter后端 原文链接:celery笔记七之周期/定时任务及crontab定义 periodic task,即为周期,或者定时任务,比如说每天晚上零点零分需要运行一遍某个函数,或 ...
- 使用MASA Stack+.Net 从零开始搭建IoT平台 第五章 使用时序库存储上行数据
@ 目录 前言 分析 实施步骤 时序库的安装 解决playload没有时间戳问题 代码编写 测试 总结 前言 我们可以将设备上行数据存储到关系型数据库中,我们需要两张带有时间戳的表(最新数据表 和 历 ...
- PHP检查更新加载本地版本号并解压覆盖
<?phperror_reporting(0);ob_implicit_flush(true);$begin = microtime(true);//检查更新,加载本地版本号$config = ...
- 行行AI人才直播第6期:当AIGC时代降临,当代青年如何把握新时代机遇
AIGC时代的到来,给我们带来了无限的想象空间和创造力.AIGC不仅可以提高内容生产的效率和质量,还可以创造出人类无法想象的新颖和有价值的内容,为数字文化产业.产业互联网.社会价值等领域带来变革性的影 ...
- 【Linq】 join 子句中其中一个表达式的类型不正确。在对“GroupJoin”的调用中,类型推理失败。
报错代码: 原因分析:on后面的两个关联条件 数据类型不匹配,调整为一致即可.
- 如何用Three.js + Blender打造一个web 3D展览馆
作者:vivo 互联网前端团队- Wei Xing 运营活动新玩法层出不穷,web 3D炙手可热,本文将一步步带大家了解如何利用Three.js和Blender来打造一个沉浸式web 3D展览馆. 一 ...
- Map集合_HashMap_TreeMap_等_小记
Map是一种依照键值对数据存储元素的容器. Map中的元素是两个对象,一个对象作为键,一个对象作为值.一个键(key)和它对应的值构成map集合中的一个元素.Map集合的数据结构只跟键有关,键不可以重 ...
- Python数据分析易错知识点归纳(四):Matplotlib
四.matplotlib 基本特性 import matplotlib.pyplot as plt import numpy as np x = np.linspace(-3, 3, 50) y1 = ...
- 王道oj/problem15(用c++的引用精简代码)
网址:http://oj.lgwenda.com/problem/15 思路:子函数的形参是指针的时候格式为 int*&p,且原函数实参为p 主函数使用fgets(字符串的指针,最大容量,st ...