暑假集训学习笔记(3):lxl DS Day 3

区间最值操作

CF1572F

首先广播站 i, 能覆盖到的肯定是相对于 i 的前缀, 我们可以维护一个 ri, 表示每个 i 可以覆盖到的右端点, 考虑每次一操作,就是把 rx 改为 g, 然后 x1 以前的 ri 就不能跨越 x 了, 这就是区间取 min 操作, 然后我们考虑segment beats 的过程, 我们会新开一个数组 bi 表示 i 这个位置会被多少个广播站传到, 考虑 max 变为 v 时, 我们维护最大值有多少个, 然后对应的 b 数组的 [v+1,max] 位置就区间减 cntmaxb 数组要支持区间加减区间查, 再开一颗线段树即可, 然后这题就解决了。

CF793F

无修改, 可以优先考虑扫描线, 考虑扫 x 不好维护, 因为我们从 l+1 扫到 l 的时候, 我们第一个开始的绳子会发生变化, 我们从 y 开始扫, 这样我们就只用考虑接上最后若干根绳子,我们维护 fi 表示从 x==i 的答案, 考虑现在绳子右端点 r==y 的绳子, 如果 fir, 就都可以跑到 r, 这就是将 i(1,l),ail 的赋值为 r, 这个可以用吉司机维护, 复杂度分析类似区间最值操作 O(nlogn)

CF1919F2

考虑这题可以网络流, 维护最小割。

减半警报器

减半警报器, 是把多个位置的高自由度通过划分为 logV 的值域转化成低自由度。 每次把剩余空间平均分配给每个位置。

cfgym102452 I

考虑这题十分的简单, 我们把 y 平均分给三个位置, 然后单点修改, 每个位置维护一个数据结构维护剩余空间, 然后单点修改就是每个位置的数据结构全局减, 然后把小于 0 的弹出, 在重新分配给其他位置即可, 考虑一种监视器最多分配 logV 次就会清零。

P7603 [THUPC2021] 鬼街

考虑就是上一题 k6 的情况, 有个细节就是, 有可能一次修改会把同一个警报器的多个位置清零, 所以需要一个去重操作, 实际操作也很简单, 优先队列自动取最小的, 也就是优先取最后一次警报, 开个 vs 数组判断一下即可。

CF gym 104065 B

猫树分治

posted @   qqrj  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示