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

题解:[JOI Final 2026] 稻草人 2 / Scarecrows 2

题意:给出若干个形如 \(x\le X_i,x\ge X_i,y\le Y_i,y\ge Y_i\) 的覆盖,每个覆盖代价为 \(c\),要求平面上每个点被覆盖至少 \(k\) 次,求最小代价。

做法:

考虑一维怎么做,发现我们需要若干个形如 \(x\le a, x\ge b,b\le a\) 的形式才行,那么就等于一个括号匹配,选出 \(k\) 对,这个显然是凸的,wqs 完之后用优先队列选出尽量多的代价 \(\le 0\) 的匹配即可。

然后是二维,我们发现其实对于两维是完全独立的,手玩一下可以知道,然后因为两边都是凸的,所以总的也是满足凸的,所以同时 wqs 直接合并即可,对两维分别做即可,复杂度 \(O(n\log n\log V)\)

代码:

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int maxn = 2e5 + 5;
int n, k;
struct node {int op, x, c;friend bool operator<(node x, node y) {return (x.x != y.x ? x.x < y.x : x.op > y.op);}
} x[2][maxn];
int tot[2];
struct Stu {int val, c;friend bool operator<(Stu x, Stu y) {return (x.val != y.val ? x.val > y.val : x.c > y.c);}
};
priority_queue<Stu> q;
int res;
int cal(int k, int d) {while(!q.empty())	q.pop();int ans = 0; for (int i = 1; i <= tot[k]; i++) {if(x[k][i].op == 2)q.push(Stu{x[k][i].c, 1});else {if(!q.empty() && q.top().val + x[k][i].c + d <= 0) {res += q.top().val + x[k][i].c + d;ans += q.top().c; q.pop();q.push(Stu{-x[k][i].c - d, 0});}}}return ans;
}
signed main() {cin >> n >> k;for (int i = 1; i <= n; i++) {int op, xt, y, c;cin >> op >> xt >> y >> c;if(op <= 2)x[0][++tot[0]] = node{op, xt, c};elsex[1][++tot[1]] = node{op - 2, y, c};}sort(x[0] + 1, x[0] + tot[0] + 1);sort(x[1] + 1, x[1] + tot[1] + 1);int l = -1e13, r = 0;while(l + 1 < r) {int mid = l + r >> 1;res = 0;if(cal(0, mid) + cal(1, mid) >= k)l = mid;elser = mid;}res = 0;int t = cal(0, l) + cal(1, l);if(t < k) cout << -1 << endl;elsecout << res - l * k << endl;return 0;
}
http://www.jsqmd.com/news/588802/

相关文章:

  • 深入Angular Spotify架构:Nx Workspace最佳实践解析
  • 破解8大效率陷阱:设计师必备的自动化工具系统
  • OpenClaw 报错大全:2026 年我踩过的 12 个坑 + 完整解决方案
  • 论文写作的几条常识
  • Thrust事件处理机制:全面解析窗口、键盘和鼠标事件响应
  • 汉中旧房改造全攻略:为什么选择本地靠谱品牌?——汉府人家装饰老房翻新实战指南 - 一个呆呆
  • SAP借助“网络安全维基百科“平台破解威胁数据难题
  • ThorUI-uniapp插件生态解析:如何扩展你的开发能力
  • 解锁游戏新境界:Sunshine自托管串流服务器完全指南
  • GoHTTPServer 性能优化秘籍:提升文件传输速度的10个方法
  • Kandinsky-5.0-I2V-Lite-5s教学视频:B站UP主用它批量生成知识类动态图解
  • OpenClaw如何做好记忆持久化的 · 四、设计哲学:三个核心架构决策
  • AI Agent开发快速入门:awesome-ai-resources中的智能代理学习资源
  • Cortex源码解析:深入理解C++ AI服务器的实现原理
  • 【LeetCode刷题日记】:反转链表(面试基础考察)
  • 突破网盘下载限制:多平台直链解析工具的技术实现与效率优化指南
  • 如何用Charticulator快速创建专业级定制图表:5个简单技巧让你成为数据可视化高手
  • 基于PLC的门禁系统自动电气控制设计:“详解带图解的梯形图、接线图与原理图IO分配及组态画面
  • Lepton AI批处理机制深度解析:提升GPU利用率的终极指南
  • ChatGLM3-6B GPU利用率优化:RTX 4090D上batch_size与max_length调优
  • 自然语言驱动的无脚本自动化
  • python math
  • C++编程主题:智能指针深入解析
  • Youtu-Parsing模型版本管理与回滚:使用Docker Tag与仓库
  • Qwen3-ASR-0.6B低成本部署:中小企业替代商业ASR API的实践
  • 5个高效率文档AI工具推荐:OpenDataLab MinerU镜像免配置一键部署入门必看
  • 英伟达携手Marvell扩展网络生态系统,推进AI基础设施建设
  • apitrace跨平台部署实战:Linux、Windows、Mac完整配置
  • 如何快速上手Zrythm:10个必学的基础技巧
  • 机器学习基础(十一):过拟合与正则化