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

Codeforces Round #723 (Div. 2) C2. Potions (Hard Version) (贪心、dp、数据结构) 题目链接:https://codeforces.com/contest/1526/problem/C2 题目大意: 从左到右有杯酒,每杯酒有一个健康值,喝掉一杯酒后,人的健康值会加。初始的时候人的健康值为0,在最左边的酒,从左到右往后喝,对于一杯酒可以选择喝和不喝,人的健康值在整个过程不能小于0,求最多可以喝几杯酒? 题解: 方法1:dp 表示前杯酒喝了杯最大的健康值 这种方法复杂度 个人的解法:贪心 若当前酒健康值为-4且能喝,后面有杯健康值为-1,那么显然后面这杯健康值为-1的酒是. 阅读详情

This is the hard version of the problem. The only difference is that in this version n≤200000�≤200000. You can make hacks only if both versions of the problem are solved.

There are n� potions in a line, with potion 11 on the far left and potion n� on the far right. Each potion will increase your health by ai�� when drunk. ai�� can be negative, meaning that potion will decrease will health.

You start with 00 health and you will walk from left to right, from first potion to the last one. At each potion, you may choose to drink it or ignore it. You must ensure that your health is always non-negative.

What is the largest number of potions you can drink?

Input

The first line contains a single integer n� (1≤n≤2000001≤�≤200000) — the number of potions.

The next line contains n� integers a1�1, a2�2, ... ,an�� (−109≤ai≤109−109≤��≤109) which represent the change in health after drinking that potion.

Output

Output a single integer, the maximum number of potions you can drink without your health becoming negative.

Example

input

Copy

6
4 -4 1 -3 1 -3

output

Copy

5

Note

For the sample, you can drink 55 potions by taking potions 11, 33, 44, 55 and 66. It is not possible to drink all 66 potions because your health will go negative at some point

题目大致意思:给n瓶药水,照顺序喝,不能喝到负数,问最多喝几瓶?

这题考点是优先队列的使用。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl "\n"

ll n,m;

void solve(){
	cin >> n;
	ll sum=0,c=0,x;
	priority_queue<ll,vector<ll>,greater<ll> >q;
	while(n--){
		cin >> x;
		if(sum+x >= 0){
			c++;
			sum+=x;
			q.push(x);
		}else{
			if(q.empty() || x <= q.top())continue;
			else{
				sum-=q.top();
				q.pop();
				sum+=x;
				q.push(x);
			}
		}
	}
	cout << c << endl;
	return;
}

int main(){
	ll t=1;//cin >> t;
	while(t--)solve();
	return 0;
}
双目相机立体匹配算法概述(含Python代码) 立体匹配任务是计算机视觉中的一个重要问题,旨在从一对具有相同场景的图像中估计每个像素的视差(disparity)。本文对现有的传统算法和深度学习算法进行了综述,以便于各位选择合适的立体匹配算法用于深度估计或三维建模。 阅读详情

相关推荐

别自己写CDC了!聊聊Xilinx AXI4-Stream Clock Converter IP里的寄存器管道模式到底有多省资源

本文探讨了Xilinx AXI4-Stream Clock Converter IP核的寄存器管道模式在FPGA设计中的高效资源利用。通过对比手工CDC实现,详细解析了IP核的精简化同步架构和时序收敛优势,并提供了实战案例和优化策略,帮助工程师快速实现时钟域转换,显著提升设计效率和性能。

weixin_33738555的博客 441

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

当碰到负数时,如果加上这个负数,我们的值仍然是非负数,那么本着贪心的原则,能贪则贪,我们就选择这个。对于这道题就是当我们遇上加上这个数是负数时,如果之前有比这个数更小的负数,我们就删去之前更小的那个负数,选择这个数。反悔贪心也就是指我当前阶段觉得这个可以贪,那我就贪,但当我走到下一个阶段发现贪当前这个远胜于贪之前那个的时候就反悔,不再要之前贪的那个了,俗称“渣男”。题意:给定长度为n的数组,每个元素可选择要或者不要,初始值为0,要求在保证得到的值始终不为负的情况下,能选择的最多的个数。

weixin_50089904的博客 513

基于Jetson Nano与YOLOv5s的无人机道路抛洒物实时检测系统【附数据集+代码】

本文详细介绍基于Jetson Nano与YOLOv5s的无人机道路抛洒物实时检测系统,通过硬件选型、数据采集、模型优化等关键步骤,实现高效的道路安全监控。系统结合无人机高空视角和YOLOv5s算法,能精准识别各类抛洒物,实测准确率达98.2%,为交通管理提供智能化解决方案。

weixin_29081163的博客 1455

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

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

m0_74113129的博客 243

Windows-Anaconda3+TensorFlow安装教程

测试环境:win10-64位和win7-64位 (系统必须是64位,因为TensorFlow目前只支持64位) 一、安装Anaconda3 1.下载Anaconda3 Anaconda官网链接:link 这里我们选择Windows版本,python3.6-version-64位,如下图所示。 2.下载完成之后,点击安装Anaconda3 注意:安装过程中要选择添加环境变量,如图 待安装完成...

DoctorCuiLab的博客 3086

量化平台深度测评:聚宽 / 米筐 / 迅投 QMT 对比分析

本文对比测评国内主流量化交易平台聚宽、米筐和迅投QMT,从回测性能、实盘稳定性和高级功能三方面展开分析。测试显示:聚宽在低频策略回测中效率最高(128秒),米筐次之;迅投QMT凭借C++直连架构实现最低延迟(150ms)和最高订单撤销成功率(98.5%)。平台特色方面,QMT的智能拆单算法可减少25%滑点损失,聚宽的因子库支持版本控制和缓存复用。建议低频策略选聚宽,高频交易选QMT,团队协作优先考虑聚宽。测试数据均来自合规实盘环境,建议根据策略特性进行试用验证。

tianchi2009123的博客 7372

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

https://codeforces.com/contest/1526/problem/C2 超级无敌可爱的eke老师: 逸珂 0:35:47 我是维护了一个优先队列 逸珂 0:36:17 记录队列元素的分数和 逸珂 0:36:36 如果和小于0了,就把队列里面最小的数pop掉,直到不为负 逸珂 0:36:51 然后用队列长度更新答案 出尘 0:37:13 嗯 逸珂 0:37:40 其实我因为C1用了dp,C2也老想着dp 出尘 0:37:58 嗯嗯 出尘 0:37:59 我也是 出尘 0:38:11 还想

出尘的博客 299

推荐系统[九]项目技术细节讲解z2:搜索Query理解[Term Weight、Query 改写、同义词扩写]和语义召回技术

在 pooling 方法上,我们也尝试过不同层 pooling,或者在多层上增加 attention 聚合 BERT 多层结果,效果和最后一层所有 token 做 average pooling 相当。损失函数方面,在排序阶段使用pairwise比 pointwise 损失函数的效果会更好。

丨汀、的博客 1109

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

所以我们可以得到什么,按顺序走,如果前边的路过没有喝,那么就不能再喝,所以我们无法确定喝还是不喝,非负数肯定全喝,然后在负数中 喝大的和小的一样,所以我们对这个性质便可以有所操作,我们前边能喝就喝,然后使用优先队列小顶堆,如果喝不下了,就把负的最小的扔出去,再喝当前负的较小的,这样反复,到最后就是最优的。那么这肯定是一道奇妙思维题,我们根据题目可以得到以下:可以喝或不喝 从左到右走 喝的最大的数量。对于每一剂药剂,你可以选择喝或忽略它。输出一个整数,即在你的生命值为负的情况下,你可以喝的药水的最大数量。

ACMer未入门热爱者 298

canoe安装完成开启之后因为VectorDeviceParams30_64.dll报错崩溃打不开...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 1077

Ubuntu零基础入门到精通【1.1讲】:什么是 Ubuntu?一文带你彻底搞懂!

🏆 本文收录于 《滚雪球学 Ubuntu》 专栏。 本专栏面向有一定计算机基础,但尚未系统学习 Linux / Ubuntu 的读者,采用“滚雪球式学习法”:先装好、再会用、再理解、再优化、再实战,带你从第一次进入 Ubuntu 桌面 / 终端开始,逐步掌握 Ubuntu 的日常使用、命令操作、软件安装、系统配置、开发环境搭建与服务器部署能力。

**My Coding Family** 5745

Codeforces Round #723 (Div. 2)C2. Potions (Hard Version)[贪心+优先队列]

【题解】Codeforces Round #723 (Div. 2)C2. Potions (Hard Version)[贪心+优先队列] 一共有 n (n

qq_52801833的博客 169

为什么我的OpenClaw安装后无法启动?Gateway服务故障排查全攻略

OpenClaw是一款功能强大的自动化工具,但其安装和运行依赖于多个服务组件,其中Gateway服务是核心组件之一。如果Gateway服务无法启动,整个OpenClaw系统将无法正常运行。本文将详细介绍OpenClaw安装后无法启动的常见原因及故障排查方法,帮助你快速定位并解决问题。

一键难忘的博客 4625

Codeforces Round #723 (Rated for Div 2)

目录 A - Mean Inequality 题意: 想也不想直接暴力 数组开小了然后。。

quinn18的博客 290

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

深挖C++:类和对象(中)

(先进后出)

xys_678的博客 239

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

选型笔记:Type‑C 扩展坞方案评估|DP1.4 转 HDMI2.0 桥接芯片 GSV2201S@ACP

本文记录 GSV2201S 这款 DP1.4a 转 HDMI2.0 桥接芯片评估,梳理视频、HDCP、PD 集成能力,总结 Type‑C 转接 Dongle、扩展坞方案的适配边界,以及差分走线、PD 时序、HDCP 握手等高频调试问题,为 C 口视频转接方案选型提供参考。

ACP广源盛的博客 221

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

C++移动构造函数详解

移动构造函数是C++11引入的一种特殊构造函数,用于从临时对象(右值)"窃取"资源来初始化新对象,而不是进行昂贵的深拷贝。char* data;public:// 移动构造函数:参数是右值引用 &&// 关键:把源对象的资源置空。

拒绝AI文,努力在AI时代写出感动人心的好文章 391

ThunderKittens 深度解析:一个不基于 MLIR 的 C++ 模板 GPU DSL

Triton 是"让更多人能写 GPU kernel",ThunderKittens 是"让会写的人写得更爽"。前者用 MLIR 换易用性,后者用 C++ 模板换可控性。它们不是替代关系,而是覆盖了 GPU 编程光谱的两端。ThunderKittens 的出现,本质上是对"GPU DSL 必须基于 MLIR"这一默认假设的挑战。编译期类型系统本身就可以是一个强大的 DSL 基础设施,不需要中间 IR,不需要黑盒 pass,也能实现 tile 级抽象和零运行时开销。

Maxwell_Newton的博客 337

【C语言】字符与字符串函数

C语言中字符串为以\0结尾的字符数组,标准库函数基于此约定。本文解析字符串内存布局,详解ctype.h与string.h中字符分类、长度计算、拷贝、比较等函数的使用要点,强调长度判断与越界风险,最后通过命令行待办事项示例整合fgets、sscanf、strncpy、strcmp,展示实际应用中的关键细节。

记录在学习过程中学到的知识 346

C++ 多态详解:作用、原理与实战用法

多态是C++面向对象的核心特性,通过虚函数实现运行期动态绑定,使同一接口在不同对象上表现出不同行为。其核心作用包括统一接口、提升可扩展性、降低耦合、支持运行时分派与批量处理。实现依赖虚函数表(vtable)和虚指针(vptr),需注意虚析构函数、对象切片等陷阱。相比编译期多态(模板),运行期多态灵活性高但有调用开销。合理结合两者,可兼顾代码的灵活性与性能,是构建可扩展、低耦合系统的关键。

2402_85743155的博客 382

C++ 函数模版

模板参数:● template ,T 就是类型占位符,名字可以自定义,习惯用T● 占位符可以在函数返回值、形参、函数内部当作类型使用使用要点模板代码一般写在头文件:编译器需要看到完整模板源码,才能在每个编译单元完成实例化全局函数、类内成员函数都可以写成模板实例化发生在编译阶段,不是运行时隐式实例化:调用时编译器自动推导实参类型,生成对应版本函数。

2501_94041724的博客 304

C++ 运行时多态与虚函数机制全面剖析【面试重点】

构成C++ 运行时多态必须是基类的指针或者引用调用虚函数。被调用的函数必须是虚函数,并且派生类必须对该虚函数完成重写/覆盖(Override)。只有基类的指针或引用才能既指向基类对象,又指向派生类对象(切片机制);而只有完成了虚函数重写,派生类与基类才具备不同的函数行为,达到“指向谁就调用谁”的效果。在类成员函数的前面加上virtual关键字修饰,该成员函数就成为了虚函数。public:// 成员函数前加 virtual 修饰,声明为虚函数。

Fuyo_0209的博客 437

#SQLite 数据库笔记一:(概念 / 终端指令 / SQL 语句 / C 编程 / 回调函数)

数据库 = 数据的仓库,假设数据是海量。能力说明存储数据持久化保存,程序退出数据还在统计数据、分组、排序数据管理增、删、改、查(CRUD)嵌入式设备上也会用数据库(单片机网关、路由器、工业 HMI 都常见),因为 sqlite 体积小、无需服务进程、单文件即可。数据库 = 库 > 表 > 记录(行) > 字段(列)sqlite3 = 开源、C 写的、单文件、免安装、最多 2T 的嵌入式关系型数据库。

lwq20051110的博客 205

【C++】【STL】string_OJ题

本文总结了9道C++ STL中关于string的OJ题目,按操作类型分为三组:反转与就地修改(如917、541、151)、计数与查找(如387、125、58)、模拟与大数运算(如415、43、8)。核心技巧包括双指针收敛、字符分类处理、进位控制及边界值处理。所有题目使用同一套源码,在标准库std::string与自定义容器MyString间切换仅需宏定义,验证结果一致性。代码通过随机测试用例与Trace函数逐行比对,确保逻辑正确性,强调接口对齐的重要性。

这里是Cocatrice的博客,感谢大家一直以来的支持和鼓励,如果对C/C++方向感兴趣的话,可以通过主页的微信名片加Cocatrice的好友,也可以通过邮箱:Chen31980094@163.com 联系,一同加油! 4371

C 语言 malloc() 详解与实战 Demo

本文详解C语言malloc()函数,涵盖其语法、内存原理及实战应用。通过动态整数、数组、结构体与链表的Demo,演示如何安全申请、使用与释放内存,强调避免内存泄漏与空指针检查的重要性,帮助开发者掌握动态内存管理核心技能。

tangPHP的博客 370

【C++ 基础入门】类和对象(上):封装、对象模型与 this 指针

C++类与对象知识(面向过程和面向对象的初步认识,类的初步认识,类的访问限定符及封装,类的作用域、实例化,类的对象模型,this指针)

2601_96587588的博客 880
上一篇: A. Maze Codeforces Round 222 (Div. 1)
下一篇: G. Special Permutation Codeforces Round 640 (Div. 4)
翰墨织梦
博客等级 码龄4年 384粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值