【A】数据结构 1

呜呜呜要走了。

TEST_73

点边容斥做,然后扫描线即可。

CF522D Closest Equals

支配对只有 \(O(n)\) 个,扫描线。

2021牛客暑期多校训练营6 Hopping rabbit

按照 \(d\) 分块,显然矩形不能包含任意一个网格。
可以将矩形的限制都放在一个网格内,只有 \(O(1)\) 种限制,查询矩形面积并。

P7560 [JOISC 2021] フードコート (Day1)

我们考虑二分查询的人是哪次操作进来的。
考虑对于某个队列,维护他时间轴上,人数的情况。

  • 引理:后缀最大值满足,他前面一个时刻是最后一个队列为空的时刻。

那么我们找到这个时刻,然后可以二分找。

所以整个题就是扫描线,修改时间轴线段树。

山东省队集训 2019 某题(区间虚树,区间链的并)

  • 给出一棵树和 \(m\) 个路径,多次询问区间路径并的边权之和。

树剖,然后维护每个边最后一次被覆盖的路径的编号,然后用树状数组维护吧。

P8990 [北大集训 2021] 小明的树

限制变为,未点亮的节点构成连通块,且包含根。
即点-边=1,若不管根节点则为 0,不妨设这个值为 \(a_i\)
同理统计答案的时候也是点-边,不妨设这个值为 \(b_i\)
答案即为:\(\sum [a_i=0]\times b_i\)。修改是 \(O(1)\) 个对 \(a,b\) 的区间加减。
注意到 \(a_i\ge 0\),那么我们统计 \(a\) 最小值的 \(\sum b_i\) 即可。
支持线段树维护。

CF1814F Communication Towers

线段树分治维护可以通过 \(x\) 到达的连通块,然后给 1 所在连通块打 tag 即可。
注意 tag 是有时间戳的,合并也有。在撤销操作的时候下放 tag。

P11111 [ROI 2023] 生产计划 (Day 2)

考虑 \(a_i=l_i\)\(a_i=r_i\) 的情况,他们算出的最大独立集分别为 \(v_l,v_r\),则可行的最大独立集应该满足 \(v\in [v_l,v_r]\)
然后你发现增加某个 \(a_i\),对独立集的影响要么不变,要么加一。所以这些值都是可以取到的。
考虑构造方案。从 \(i=1\sim n\),依次将 \(a_i\)\(l_i\) 增加到 \(r_i\)\(a_i\) 会影响到独立集大小的值显然是 \(a_i\in [x,r_i]\)
考虑求出 \(v_i\) 表示 \(a_{1\sim i}\) 都取了 \(r\)\(a_{i+1\sim n}\) 都取了 \(l\) 的最大独立集,构造方案的时候控制 \(a_i\) 的大小即可,容易计算。

那么这个东西是可以 ddp 求出,发现一点也不优美。考虑到这个顺序是可以变成 dfn,换根 dp 就可求出。

CF1344E Train Tracks

考虑维护每个节点的时间轴。若 \(u\) 相邻两辆火车的目标儿子不同,则这两个时刻之间一定要有切换。
考虑启发式合并,使用平衡树维护,需要维护打 tag 操作。关心新增加的这些支配对即可。
复杂度 2log。

P11398 众数

倍增分块。\(\color {Red} \mathtt ?\)

posted @ 2025-12-22 14:10  TallBanana  阅读(1)  评论(0)    收藏  举报