2023 CCPC final G

news/2025/10/11 12:36:59/文章来源:https://www.cnblogs.com/Kescholar/p/19133161

G. China Convex Polygon Contest

反悔贪心。

首先可以考虑对 \(b\) 排序,显然思考越快的题可以使手里攒着的题更多更有选择的空间。

如果正着贪心的话就是,当前能做就立马提交,如果当前的时间更优但选不了就从之前丢一个小的然后选择当前;但是会存在这样一个情况,刚开始把 \(a_x-a_k\) 丢进堆,然后到了 \(b_y\),如果 \(a_y-b_y \ge a_z-a_y\),自然选当前段更好,但是反之 \(a_z-a_y>a_y-a_x>a_x-a_k\),我们就要抛弃掉之前的 \(a_x-a_k\),让 \(b_x\) 去选 \(a_y-a_x\) 段,\(b_y\) 去选 \(a_z-a_y\)

因为你不知道 \(b_y\) 是否会在后面更优,于是对于 \(b_y-a_x\) 这一段你就得考虑怎样去维护,由于你的堆里维护的是你选了的,所以你不能直接丢进去,发现这个东西不好维护。
image

正难则反,考虑反着遍历。

维护一个最大堆,维护你没有选过的答案,枚举到当前 \(a_i\) 时,假设这一段区间内有 \(x\)\(b_j\),除去最后一个需要特殊处理一下,那么前 \(x-1\) 个显然是选择堆顶的 \(x-1\) 个贡献,这些答案显然是确定的且更优,最后可能会剩一些没用完的 \(b\),但是后面已经没有贡献了,我们只考虑最接近 \(a_i\) 的那个 \(b\),以 \(a_x\)\(b_y\) 为例,如果目前堆中仍有答案且比 \(a_y-b_y\) 更优,那么显然,我们这个 \(b_y\) 选后面的更优,这一段直接就放 \(a_y-a_x\) 进去让更前面的选;否则就选上当前的 \(a_y-b_y\),然后把 \(b_y-a_x\) 加到堆顶(记为 \(S\rightarrow S+b_y-a_x\) ),如果你后续有 \(b\) 选到了这个堆顶,意味着,是之前那个 \(b\) 反悔了选了 \(S\),而现在这个 \(b\) 选了 \(a_y-a_x\),但是总的贡献仍然有 \(S + a_y - a_x\)

点击查看代码
#include <bits/stdc++.h>using i64 = long long;void solve() {int n, m;std::cin >> n >> m;std::vector<int> a(n + 2);std::vector<i64> b(n);for(int i = 1; i <= n; i += 1) {std::cin >> a[i];}a[n + 1] = m;for(int i = 0; i < n; i += 1) {std::cin >> b[i];}sort(b.begin(), b.end());for(int i = 1; i < n; i += 1) {b[i] += b[i - 1];}while(b.size() && b.back() > m) {b.pop_back();}int ans = 0;std::priority_queue<int> pq;for(int i = n; i >= 0; i -= 1) {std::vector<int> vec;while(b.size() && b.back() >= a[i]) {vec.push_back(b.back());b.pop_back();}std::reverse(vec.begin(), vec.end());while(vec.size() > 1 && pq.size()) {ans += pq.top();pq.pop();vec.pop_back();}if(vec.size()) {int x = a[i + 1] - vec[0];int y = 0;if(pq.size()) {y = pq.top();pq.pop();}if(y >= x) {ans += y;pq.push(a[i + 1] - a[i]);} else {ans += x;y += vec[0] - a[i];pq.push(y);}} else {pq.push(a[i + 1] - a[i]);}}std::cout << ans << "\n";}
int main() {std::ios::sync_with_stdio(false);std::cin.tie(nullptr);int t;std::cin >> t;while (t--) {solve();}return 0;
}

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

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

相关文章

完整教程:微软 Azure AI 视频翻译服务助力 JowoAI 实现短剧高效出海

完整教程:微软 Azure AI 视频翻译服务助力 JowoAI 实现短剧高效出海pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &qu…

2025 年高可靠性测试设备/HALT/HASS/Halt/Hass/厂家制造商推荐榜:聚焦高效质量解决方案,助力企业产品升级

随着制造业升级加速、高端产品对可靠性要求提升及全球市场对质量标准的严格化,高可靠性测试设备已从特定行业需求逐步成为电子、汽车、航空航天等领域的必备工具,2025 年市场规模预计持续增长。但市场扩张也带来厂商…

八字手链人物传记计划——旭

写在前面1542 字 | 朋友 | 感触 | 生活细节 | 经历 | 生活灵珍琴懿,骆旭泽予。 正文我与旭已经四年没有联系过了。自初中以后,他似乎消失了一般。后面听人说,他去学了医。我很难想象,那个憨厚老实的一个胖胖孩子,…

详细介绍:c# datagridview添加list内容

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

20232309 2025-2026-1 《网络与系统攻防技术》实验一实验报告

1.实验内容 1.1学习内容缓冲区漏洞的概念,发展历程,经典案例 缓冲区溢出的基本知识gdb的基本操作:break、step、stepi、continue等 基本汇编指令:push、pop、ret、call等 栈结构:环境变量/参数和个数以及主函数和…

亚马逊发布基于Linux的Vega OS电视系统,禁止侧载应用

亚马逊正式推出基于Linux的Vega OS电视操作系统,取代基于Android的Fire OS。新系统仅支持亚马逊应用商店,禁止侧载应用,性能更高效但内存要求更低,目前仅在新款Fire TV 4K Select上提供。亚马逊发布基于Linux的Veg…

.net9.0 JWT AUTH2.0 添加身份认证授权

1、添加 Microsoft.AspNetCore.Authentication.JwtBearer 包(9.0.9) 2、 添加类 public class TokenParameter { public const string Issuer = "aa";//颁发者 public const string Audience = "bb&q…

实用指南:同时使用ReactUse 、 ahooks与性能优化

实用指南:同时使用ReactUse 、 ahooks与性能优化2025-10-11 12:09 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; displa…

解决vscode中用npm报错

在终端运行npm run serve显示 npm : 无法加载文件 D:\nodejs\npm.ps1,因为在此系统上禁止运行脚本 看一些网友建议说用管理员身份运行vscode,打开后问题仍未解决。 准备参考https://blog.csdn.net/weixin_48475651/a…

MATLAB复杂曲线曲面造型及导函数实现

一、复杂曲线曲面造型方法 1.1 样条插值技术 1.1.1 Catmull-Rom样条数学原理:通过控制点构建分段三次多项式曲线,保证切线连续性MATLAB实现: function p = catmull_rom(p0,p1,p2,p3,nPoints)dt = 1/(nPoints-1);t =…

2025 年最新月嫂培训机构推荐榜单:短期 / 精英 / 金牌 / 高端月嫂培训及就业推荐,精选优质机构

随着母婴护理需求的持续攀升,月嫂行业成为热门职业选择,各类月嫂培训机构也如雨后春笋般涌现。但当前市场乱象频发,部分机构课程体系不完善、实操训练不足,导致学员毕业后难以胜任工作;还有机构以 “高薪就业”“…

【C++实战㊳】C++单例模式:从理论到实战的深度剖析 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

OOP-实验一

实验任务1 源代码 #include <iostream> #include <string> #include <vector> #include <algorithm>template<typename T> void output(const T &c);void test1(); void test2(); v…

达梦使用jemalloc内存分配器

下载和安装jemalloc内存分配器 wget https://github.com/jemalloc/jemalloc/archive/5.2.1.tar.gz tar -xzvf 5.2.1.tar.gz cd jemalloc-5.2.1/ yum -y install autogen autoconf yum install -y gcc gcc-c++ ./autoge…

2025 年深圳/龙岗/龙华/罗湖/南山/旧房翻新/出租房/二手房/老房/装修公司推荐:聚焦品质与服务,助您轻松焕新家

随着居民生活品质提升、存量房市场扩容及消费观念升级,家庭装修需求正从 “基础装修” 向 “品质焕新” 转变,2025 年深圳地区家装市场规模预计持续增长。但市场繁荣也带来企业资质、工艺水平、服务能力参差不齐的问…

基于Python的FastAPI后端开发框架如何使用PyInstaller 进行打包与部署

基于Python的FastAPI后端开发框架如何使用PyInstaller 进行打包与部署我在随笔《WxPython跨平台开发框架之使用PyInstaller 进行打包处理》中介绍过如何使用PyInstaller 进行打包处理的一些过程和事项。我们基于Python…

推荐AI编程项目——MonkeyCode用自然语言就能生成完整可部署应用

推荐AI编程项目——MonkeyCode用自然语言就能生成完整可部署应用在2025年的今天,软件开发已经不再是少数技术专家的专利。随着AI技术的飞速发展,编程正在变得越来越平民化。而在这股浪潮中,有一款工具正在重新定义我…

2025 年中频炉厂商最新推荐排行榜权威发布,深度剖析应达电气等优质企业核心优势及选购要点节能/智能/自动化成套/高效率/智能感应加热中频炉厂家推荐

当前,中频炉作为冶金、熔炼、机械制造等工业领域的关键设备,其性能优劣直接关系到企业生产效率、成本控制与环保达标情况。随着国家节能减排政策的深化推进以及产业升级加速,市场对节能、智能、自动化的中频炉需求激…

2025 年气体/实验室/调压/气路/减压阀厂家推荐榜:聚焦安全与专业,助力各行业精准选品

随着工业制造升级、实验室建设规范化及新能源产业快速发展,气体减压阀作为特气供气系统的核心组件,已成为电子半导体、生物医药、新能源、科研院所等领域的关键设备。2025 年气体减压阀市场需求持续增长,但市场上产…