当前位置: 首页 > news >正文

2023 CCPC final G

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.hskmm.com/?act=detail&tid=28569

相关文章:

  • 2025 年高可靠性测试设备/HALT/HASS/Halt/Hass/厂家制造商推荐榜:聚焦高效质量解决方案,助力企业产品升级
  • 八字手链人物传记计划——旭
  • 20232309 2025-2026-1 《网络与系统攻防技术》实验一实验报告
  • 亚马逊发布基于Linux的Vega OS电视系统,禁止侧载应用
  • .net9.0 JWT AUTH2.0 添加身份认证授权
  • 扣子系列教程
  • 解决vscode中用npm报错
  • MATLAB复杂曲线曲面造型及导函数实现
  • 2025 年最新月嫂培训机构推荐榜单:短期 / 精英 / 金牌 / 高端月嫂培训及就业推荐,精选优质机构
  • OOP-实验一
  • 达梦使用jemalloc内存分配器
  • 2025 年深圳/龙岗/龙华/罗湖/南山/旧房翻新/出租房/二手房/老房/装修公司推荐:聚焦品质与服务,助您轻松焕新家
  • 2025 年中频炉厂商最新推荐排行榜权威发布,深度剖析应达电气等优质企业核心优势及选购要点节能/智能/自动化成套/高效率/智能感应加热中频炉厂家推荐
  • 2025 年气体/实验室/调压/气路/减压阀厂家推荐榜:聚焦安全与专业,助力各行业精准选品
  • 摸鱼混子回归 - ZERO
  • vue3实现抓拍并上传
  • 2025 年国内润滑油厂商最新推荐榜:聚焦优质品牌实力,助力企业精准选品润滑油净化/过滤/回用/液压油润滑油过滤厂商推荐
  • 纯前端实现项目过期
  • 基于形态学的权重自适应图像去噪的MATLAB实现
  • 2025 年油水分离器 / 气液分离器 / 液固分离器 / 水分离器 / 油分离器厂家推荐:西安同大技术沉淀与流体净化解决方案解析
  • 2025 年过滤器厂家最新推荐排行榜:聚焦烛式 / 金属 / 非金属 / 化工 / 精密过滤器等多类型设备,精选优质品牌助企业高效选型液固/高效/气固/催化剂过滤器厂家推荐
  • OOP-实验1
  • 2025 年立式/立式全钢板/青黄储/液压打包机厂家推荐榜:聚焦实用需求,精选高适配设备助力企业降本增效
  • DNS服务
  • 308、清平调三首
  • 2025管件厂家最新推荐榜:高品质管件与卓越工艺口碑之选
  • 2025不锈钢管件厂家推荐榜:技术实力与诚信口碑双重保障
  • 哪款剪贴板增强软件最好用?有什么剪贴板内容大全值得分享?多款剪切板历史免费版管理工具推荐
  • EndNote文献管理工具!研究生必备软件!超详细下载安装教程(附下载地址)
  • 鸿蒙应用开发从入门到实战(十九):样式复用案例