C2. Potions (Hard Version)(可以后悔的选取 + 一种新奇的优先队列用法)

news2025/2/4 5:47:24

Problem - 1526C2 - Codeforces

这是该问题的困难版本。唯一不同的是,在这个版本中,n≤200000。只有当两个版本的问题都解决了,你才能进行黑客攻击。

有n个药水排成一行,最左边是药水1,最右边是药水n。每种药水在喝下后都会使你的健康状况增加ai。ai可以是负数,这意味着该药水会减少你的健康状况。

你开始时健康状况为0,你将从左到右,从第一个药水走到最后一个。在每个药水处,你可以选择喝下它或忽略它。你必须确保你的健康状况始终是非负值。

你能喝的最大药水数量是多少?

输入
第一行包含一个整数n(1≤n≤200000)--药水的数量。

下一行包含n个整数a1, a2, .... ,an (-109≤ai≤109),代表喝完药水后的健康变化。

输出
输出一个整数,即你能喝的最大药水数量,而你的健康状况不会变成负数。

例子
inputCopy
6
4 -4 1 -3 1 -3
outputCopy
5
注意
在这个例子中,你可以通过服用药水1、3、4、5和6喝下5瓶药水。不可能喝完所有的6种药水,因为你的健康状况会在某一时刻变成负数。

题解:
我们默认每次选的时候都选cnt++,并把a[i]存到小根堆中,如果此时s < 0,我们就减去小根堆里,最小的元素,并弹出,cnt--

可以后悔的选取方法,很新奇一种思路,一旦与不符合条件,就减去之前加过最小的,

 

#include<iostream>
#include<algorithm>
#include<string>
#include<queue>
#include<vector>
#include<map>
#include<cstring>
#include<cmath>
#include<set>
using namespace std;
#define int long long
int a[200050];
int b[200050];
void solve()
{
	int n;
	cin >> n;
	int f = 0;
	priority_queue<int,vector<int>,greater<int>> q; 
	for(int i = 1;i <= n;i++)
	{
		cin >> a[i];
	}
	int cnt = 0;
	for(int i = 1;i <= n;i++)
	{
		f += a[i];
		q.push(a[i]);
		if(f < 0)
		{
			cnt--;
			f -= q.top();
			q.pop();
		}
		cnt ++;
	}
	cout << cnt;
}
//3 -2 3 
signed main()
{
//	ios::sync_with_stdio(false);
//	cin.tie(0);
//	cout.tie(0);
	int t = 1;
//	cin >> t;
    while(t--)
	{
		solve();
	} 
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/103533.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Eclipse安装和环境的基本配置

Eclipse安装 安装包 链接&#xff1a;https://pan.baidu.com/s/13LXiyGmgdAQ2MYXhim1WMg 提取码&#xff1a;WADS 不会安装的可以参考这篇文章 链接: 安装教程文章 eclipse怎么更改存储位置 1.1 file-> Switch Workspace ->Other 打开后可以看到保存文件的路径也可以…

疫情之下连锁餐饮行业积极求变,集团采购协同管理系统重构企业采购数字化

2019年底至今&#xff0c;新冠肺炎疫情已进入了第三个年头。作为接触性、聚集性行业&#xff0c;国内餐饮业持续承压&#xff0c;经历了一系列的波折。尤其2022年以来&#xff0c;国内多地出现了此起彼伏的疫情&#xff0c;给餐企带来了较大冲击&#xff0c;餐饮行业整体营收收…

【推荐】安全访问服务边缘(SASE)资料汇总合集24篇

Secure Access Service Edge (SASE) 是Gartner推出的一个新的技术理念。SASE将 SD-WAN和网络安全解决方案&#xff08;FWaaS、CASB、SWG 和ZTNA&#xff09;融合到统一的云原生服务中。SASE是Gartner最新提出的一个技术理念&#xff0c;SASE用于从分布式云服务交付聚合的企业网…

Web前端105天-day49-jQuery

jQuery02 目录 前言 一、复习 二、标签内容 三、get请求 四、新增子元素 五、委托 六、克隆 七、加载HTML 八、准备就绪 九、Node.js 十、js中提示jQuery的方案 十一、location 十二、根据地址栏参数加载页面 十三、全局样式变量 总结 前言 jQuery02学习开始 一…

vi\vim编辑器的使用及命令、快捷键

vi\vim编辑器 1、vi\vim编辑器介绍 vi\vim是visual interface的简称&#xff0c;是Linux中最经典的文本编辑器。 同图形化界面中的文本编辑器一样&#xff0c;vi是命令行下对文本文件进行编辑的绝佳选择。 vim是vi的加强版本&#xff0c;兼容vi的所有指令&#xff0c;不仅能…

信息化时代,相比于人工服务客户更喜欢自助式服务

对于SaaS产品&#xff0c;为客户提供自助式服务&#xff0c;帮助客户能够自行完成任务和解决问题&#xff0c;给到客户更好的使用体验&#xff0c;对于SaaS产品&#xff0c;搭建一个自助式知识库门户和产品知识库尤为重要。在选购产品后&#xff0c;如果没有获得很好的客户服务…

TraceView使用

TraceView 是什么&#xff1f; TraceView 是 Android SDK 中内置的一个工具&#xff0c;用于加载 trace 文件&#xff0c;用图形的形式展示代码的执行时间、调用次数及调用栈&#xff0c;便于我们分析。 如何生成 trace 文件&#xff1f; 使用代码生成 Debug.startMethodTra…

新零售时代下,物流行业迎来新机遇

电商&#xff0c;一个异军突起的新行业&#xff0c;将改变传统商业旧模式。根据相关数据显示&#xff0c;2010-2019年&#xff0c;我国电商交易规模从4.5万亿元增长到34.8万亿元&#xff0c;年均复合增速达25%。在电商飞速发展的态势下&#xff0c;物流行业也迎来了蓬勃发展。 …

【华为OD机试真题2023 JAVA】去除多余空格

华为OD机试真题,2023年度机试题库全覆盖,刷题指南点这里 去除多余空格 知识点字符串数组队列 时间限制:2s 空间限制:256MB 限定语言:不限 题目描述: 去除文本多余空格,但不去除配对单引号之间的多余空格。给出关键词的起始和结束下标,去除多余空格后刷新关键词的起始和…

Python3和Django的单元测试示例

1. unittest unittest是python自带的单元测试框架&#xff0c;unittest框架是受到 JUnit 的启发&#xff0c;与其他语言中的主流单元测试框架有着相似的风格。其支持测试自动化&#xff0c;配置共享和关机代码测试。支持将测试样例聚合到测试集中&#xff0c;并将测试与报告框…

性能测试(二)—— JMeter元件作用域和执行顺序、JMeter示例、JMeter参数化

目录 一、JMeter元件作用域和执行顺序 1. 元件的基本介绍 2. 元件作用域 3. 元件执行顺序 二、JMeter使用示例 1. JMeter第一个案例 2. 重点组件 2.1 线程组 2.2 HTTP请求 2.3 查看结果树 三、JMeter参数化 1. JMeter参数化常用方式 2. 用户定义的变量 2.1 场景 …

详解OpenCV的线段绘制函数line()

函数line()用于在图像上绘制圆形。 函数line()利用两点确定一条直线的原理在图像中绘制出一条线段。 C原型如下&#xff1a; void cv::line(InputOutputArray img,Point pt1,Point pt2,const Scalar & color,int thickness 1,int lineType LINE_8,int shift 0)Python原…

智能优化算法:人工蜂鸟算法 - 附代码

智能优化算法&#xff1a;人工蜂鸟算法 摘要&#xff1a;人工蜂鸟算法( AHA )是 ZHAO 等 于 2021 年提出的一种新型元启发式优化算法 . 该算法模拟了自然界中蜂鸟轴向飞行、对角飞行、全方位飞行 3 种特殊飞行技能和引导觅食、区域觅食、迁移觅食 3 种智能觅食策略,并通过引入…

【大数据入门核心技术-Spark】(三)Spark 本地模式安装

目录 一、Spark集群三种部署模式 1、 Local模式 2、Spark Standalone模式 3、Spark on YARN模式 二、准备工作 1、Hadoop环境安装 2、下载spark 三、安装spark 1、解压 2、配置环境变量 3、修改配置文件 4、测试安装是否成功 四、运行测试spark 1、读取本地文件 …

【Java|golang】1760. 袋子里最少数目的球---逆向二分法

给你一个整数数组 nums &#xff0c;其中 nums[i] 表示第 i 个袋子里球的数目。同时给你一个整数 maxOperations 。 你可以进行如下操作至多 maxOperations 次&#xff1a; 选择任意一个袋子&#xff0c;并将袋子里的球分到 2 个新的袋子中&#xff0c;每个袋子里都有 正整数…

buildroot 升级软件包

因为软件漏洞问题&#xff0c;需要升级软件包&#xff0c;如 ncurses、libpwquality 等&#xff1b; 我目前采用的方法如下&#xff1a; 环境&#xff1a; 下载一个 buildroot 的最新版本&#xff1a; git clone git://git.buildroot.net/buildroot.git 我使用的 linux 环…

深入底层,spring mvc父子容器初始化过程解析

spring mvc父子容器初始化过程解析1、为什么要学习spring mvc底层&#xff1f;2、Java Web应该学什么&#xff1f;1、Tomcat2、servlet3、filter4、listener3、spring mvc容器初始化过程1、以WebApplicationInitializer.onStartup()方法作为入口2、registerDispatcherServlet()…

Java真的不难(五十二)Stream流的深入理解与流式编程

Stream流的深入理解与流式编程&#xff1a; 在今年年初小应学长也写过Stream与Lambda的两篇文章&#xff0c;今天先将两者结合起来进行流式编程 一、关于这两者 Stream与Lambda都是Java8引入的新概念&#xff0c;lambda在Java编程中对于函数式编程的支持&#xff0c;有助于代…

H5 WebSQL每日成语

有一天看到同事发的类似 这种成语填空一样的内容。 惟利( )视 为德( )终 质非文( ) ( )追耗子 烂漫天( ) ( )则改之&#xff0c;无则嘉勉 得( )之作 哀( )如潮 于是就去网上找成语数据库表的 SQL… 哈哈哈 很容易就找到了. 本来打算写个前后端&#xff0c;想了想可以但没…

Codeforces Round #840 (Div. 2) and Enigma 2022 - Cybros LNMIIT题解

这场好难我是废物&#xff0c;掉大分了 A. Absolute Maximization 利用|找最大值和&找最小值即可 #include <bits/stdc.h> using namespace std; // #define int long long #define endl \nvoid solve() {int n;cin >> n;int maxn 0,minn 1023;for(int i …