news 2026/4/23 8:54:08

线段树二分

作者头像

张小明

前端开发工程师

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/4/22 18:58:23

构建高并发AI服务网关:C++与gRPC的工程实践

随着AI服务在企业中的规模化部署&#xff0c;如何高效、可靠地将多个异构AI模型集成到统一的服务架构中&#xff0c;成为后端工程师面临的重要挑战。本文介绍基于C与gRPC构建高并发AI服务网关的完整实践方案&#xff0c;涵盖架构设计、性能优化、容错机制等关键环节。 1. 问题背…

作者头像 李华
网站建设 2026/4/23 12:33:08

人机协作新模式:程序员与AI的共生关系

人机协作新模式:程序员与AI的共生关系 关键词:人机协作、程序员、AI、共生关系、编程效率、代码质量 摘要:本文深入探讨了程序员与AI之间的共生关系这一全新的人机协作模式。首先介绍了该研究的背景、目的、预期读者等内容。接着阐述了人机协作相关的核心概念与联系,分析了…

作者头像 李华
网站建设 2026/4/23 9:48:42

ReactPage页面编辑器:从内容创作到专业演示文稿的完整指南

ReactPage页面编辑器&#xff1a;从内容创作到专业演示文稿的完整指南 【免费下载链接】react-page 项目地址: https://gitcode.com/gh_mirrors/ed/editor ReactPage是一个功能强大的React页面编辑器&#xff0c;它让开发者能够轻松创建复杂的页面内容并转换为专业演示…

作者头像 李华
网站建设 2026/4/23 9:49:27

3.38 工业缺陷检测实战:物体表面缺陷检测,从图像处理到深度学习

3.38 工业缺陷检测实战:物体表面缺陷检测,从图像处理到深度学习 引言 工业缺陷检测是视觉算法的重要应用,本文通过实战案例演示从图像处理到深度学习的完整流程。 一、缺陷检测概述 1.1 任务定义 # 缺陷检测任务 def defect_detection_task():"""缺陷检…

作者头像 李华
网站建设 2026/4/23 9:44:25

ReactPage智能内容导出:从编辑器到演示文稿的高效转换方案

ReactPage智能内容导出&#xff1a;从编辑器到演示文稿的高效转换方案 【免费下载链接】react-page 项目地址: https://gitcode.com/gh_mirrors/ed/editor ReactPage作为业界领先的React页面编辑器&#xff0c;不仅提供了强大的内容创作能力&#xff0c;更通过创新的内…

作者头像 李华