news 2026/5/30 11:47:24

线段树二分

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
线段树二分

lc2286

线段树二分

class BookMyShow {
int n, m;
vector<int> mn;
vector<long long> sum;

// 把下标 i 上的元素值增加 val
void update(int o, int l, int r, int i, int val) {
if (l == r) {
mn[o] += val;
sum[o] += val;
return;
}
int m = (l + r) / 2;
if (i <= m) {
update(o * 2, l, m, i, val);
} else {
update(o * 2 + 1, m + 1, r, i, val);
}
mn[o] = min(mn[o * 2], mn[o * 2 + 1]);
sum[o] = sum[o * 2] + sum[o * 2 + 1];
}

// 返回区间 [L,R] 内的元素和
long long querySum(int o, int l, int r, int L, int R) {
if (L <= l && r <= R) {
return sum[o];
}
long long res = 0;
int m = (l + r) / 2;
if (L <= m) {
res = querySum(o * 2, l, m, L, R);
}
if (R > m) {
res += querySum(o * 2 + 1, m + 1, r, L, R);
}
return res;
}

// 返回区间 [0,R] 中 <= val 的最靠左的位置,不存在时返回 -1
int findFirst(int o, int l, int r, int R, int val) {
if (mn[o] > val) {
return -1; // 整个区间的元素值都大于 val
}
if (l == r) {
return l;
}
int m = (l + r) / 2;
if (mn[o * 2] <= val) {
return findFirst(o * 2, l, m, R, val);
}
if (R > m) {
return findFirst(o * 2 + 1, m + 1, r, R, val);
}
return -1;
}

public:
BookMyShow(int n, int m) : n(n), m(m), mn(4 << __lg(n)), sum(4 << __lg(n)) {}

vector<int> gather(int k, int maxRow) {
// 找第一个能倒入 k 升水的水桶
int r = findFirst(1, 0, n - 1, maxRow, m - k);
if (r < 0) { // 没有这样的水桶
return {};
}
int c = querySum(1, 0, n - 1, r, r);
update(1, 0, n - 1, r, k); // 倒水
return {r, c};
}

bool scatter(int k, int maxRow) {
// [0,maxRow] 的接水量之和
long long s = querySum(1, 0, n - 1, 0, maxRow);
if (s > (long long) m * (maxRow + 1) - k) {
return false; // 水桶已经装了太多的水
}
// 从第一个没有装满的水桶开始
int i = findFirst(1, 0, n - 1, maxRow, m - 1);
while (k) {
int left = min(m - (int) querySum(1, 0, n - 1, i, i), k);
update(1, 0, n - 1, i, left); // 倒水
k -= left;
i++;
}
return true;
}
};

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/21 11:35:20

深度测评10个AI论文写作软件,助本科生轻松搞定论文!

深度测评10个AI论文写作软件&#xff0c;助本科生轻松搞定论文&#xff01; 1.「千笔」—— 一站式学术支持“专家”&#xff0c;从初稿到降重一步到位&#xff08;推荐指数&#xff1a;★★★★★&#xff09; 在众多AI论文写作工具中&#xff0c;「千笔」无疑是一款备受推崇的…

作者头像 李华
网站建设 2026/5/25 18:58:48

提示工程架构实战:小样本场景下的模型压缩方案

提示工程架构实战:小样本场景下的模型压缩方案设计与落地 摘要/引言:小样本时代,我们需要怎样的模型压缩? 你有没有遇到过这样的困境? 为了做一个移动端的图像分类应用,你选了轻量级模型ViT-Tiny,但用5张图/类的小样本数据训练后,准确率勉强到70%;想再压缩模型大小(…

作者头像 李华
网站建设 2026/5/21 10:44:01

DOL-CHS-MODS汉化美化包:终极配置方案与使用指南

DOL-CHS-MODS汉化美化包&#xff1a;终极配置方案与使用指南 【免费下载链接】DOL-CHS-MODS Degrees of Lewdity 整合 项目地址: https://gitcode.com/gh_mirrors/do/DOL-CHS-MODS 想要获得完美的Degrees of Lewdity中文游戏体验吗&#xff1f;DOL-CHS-MODS整合包为您提…

作者头像 李华
网站建设 2026/5/21 12:14:07

数字签名伪装:安全边界的重新定义

数字签名伪装&#xff1a;安全边界的重新定义 【免费下载链接】Sign-Sacker 项目地址: https://gitcode.com/gh_mirrors/si/Sign-Sacker 想象这样一个场景&#xff1a;一个看似普通的可执行文件&#xff0c;却拥有微软官方签名的"身份证"。这不是天方夜谭&am…

作者头像 李华
网站建设 2026/5/23 7:47:59

工业协议全兼容:实时监控与智能控制

要实现对主流工业协议&#xff08;如 Modbus、Profinet、EtherCAT、OPC UA 等&#xff09;的支持&#xff0c;并完成 设备状态实时监控 与 指令下发 功能&#xff0c;通常需要构建一个具备协议兼容性、高实时性和安全性的工业通信平台。以下是关键设计思路和技术建议&#xff1…

作者头像 李华
网站建设 2026/5/26 16:42:36

2026必备!8个AI论文写作软件,专科生搞定毕业论文+格式规范!

2026必备&#xff01;8个AI论文写作软件&#xff0c;专科生搞定毕业论文格式规范&#xff01; AI工具助力论文写作&#xff0c;专科生也能轻松应对 随着人工智能技术的不断进步&#xff0c;越来越多的AI工具开始进入学术领域&#xff0c;为学生提供高效、便捷的写作支持。尤其是…

作者头像 李华