2025.03 做题记录
2025.03.05
学习了一下回滚莫队。考虑离线,将询问 \(l, r\) 塞到 \(l\) 所在块中,然后对于一个块中的询问按照 \(r\) 排序,块内部分暴力算,块外部分直接移动指针。移动总次数为 \(O(n \sqrt n)\)。
2025.03.06
考虑扫描线扫序列,分块维护时间,操作是区间加,区间求一个数 rank。
加入容易删除困难,考虑回滚莫队。转化为 \(x \le a_p \le y\) 的位置 \(p\) 为 \(1\),有多少个子区间中的值全为 \(1\)。
一段连续的 \(1\) 贡献为 \(\frac{len(len + 1)}{2}\)。将询问的 \((x, y)\) 看做区间,插入相当于 merge 两段连续的 \(1\)。只需维护每一个块左侧 / 右侧连续的 \(1\) 长度,每个位置左边 / 右边最远通过连续 \(1\) 能延伸到那些位置即可。
计算答案时容易的,散块暴力,整块扫一遍记录当前 \(len\) 即可。复杂度 \(O(n \sqrt n)\)。
2025.03.07
莫队。值 \(x\) 的贡献是 \(x(2^{len} - 2^{cnt_x})\)。如果模数是固定的是简单的。但每个询问的模数是变化的。考虑如果两个值的出现次数相同,他们的系数是相同的。而区间本质不同的出现次数数量是 \(O(\sqrt {len})\) 级别的。所以只需存下出现的出现次数以及其值之和即可计算。为了去掉快速幂的 \(\log\) 可以使用 \(O(\sqrt n) - O(1)\) 光速幂。复杂度 \(O(n \sqrt n)\)。
首先空白的也是偶数,比较烦,转化为总面积减去奇数。维护奇数面积打翻转 tag 即可。
显然会在一轮后结束。答案即为 \(n\) 加上横线和竖线的交点个数。扫描线维护即可。
2025.03.08
将 \(r\) 扫描线,修改是 \([pre_r + 1, r]\) 翻转奇偶性,查询是历史和。矩阵维护即可。懒得卡常了。
2025.03.09
分三种情况讨论,扫描线即可。
先扫一遍操作,对于每个位置 \(i\) 维护他最后一次被覆盖的时间 \(t_i\)。询问考虑扫描线,扫到一个操作 3 \(x\) 将 \(t_x\) 加上对应的数值,代表第 \(t_x\) 次操产生了贡献。后缀和维护。
简单扫描线。一个矩形被覆盖的条件是每一行都有车且每一列都有车。扫描线扫 \(y\),线段树维护每个横坐标上的车的纵坐标最大值,区间查询最小值是否在矩形下界之上即可。
2025.03.10
本质上是找出三元组 \((x, y, z)\) 且 \(1 \le x < y < z \le n\),满足 \(a_x, a_y, a_z\) 均在 \(a_{[x, z]}\) 中只出现一次。
考虑扫描线扫 \(z\),线段树维护 \(i\) 位置作为 \(x\) 的方案数。一个位置 \(i\) 可以作为 \(x\) 当且仅当 \(nxt_i > z\),所以每次都会把 \(pre_z\) 变为不合法。我们需要 \(pre_y < x\) 且 \(nxt_y > z\)。这个在线段树上区间修即可。
复杂度 \(O(n \log n)\),有点粪啊。
2025.03.11
D2T1,场上写的 \(O(n \log^2 n)\) 喜提 \(80\),赛后卡了卡 \(92\) 卡不动了。
维护 \(a_i - i\) 而非 \(i\),把二分 + 线段树换成线段树上二分即可转成 \(O(n \log n)\)。
D1T2,场上会 \(52\) 但只有 \(20\),你猜为什么。
容易 \(O(\frac{n^2}{\omega})\) 用 bitset 预处理每个点能到达的点。
考虑将序列拍到 \(a\) 上,对 \(a\) 分块。维护 \(f_{u, i}\) 表示点 \(u\) 能到达的在块 \(i\) 中的点的 \(\max b\)。
考虑操作分块,每 \(\sqrt q\) 个操作重构一次 \(f\),记录下当前操作块内修改的位置(\(\le 2 sqrt q\) 个),对于每个询问分块查询 + 枚举修改位置判断即可。
复杂度是牛魔。
显然的结论:如果一个点在向上跳的过程中跳到已经被别的点跳过了的点,那这个点无意义。
所以如果是全局,关键点的数量是不断减少的。
但修改是区间,考虑分块维护。整块暴力将关键点网上跳;散块会出现原来不是关键点但是往上跳后成为了关键点。维护每个块内一起往上跳的次数和每个点往上跳的次数即可。
由于空间 64MB,需要逐块处理。时间 \(O(n \sqrt n)\),空间 \(O(n)\)。
2025.03.12
非常简单的 flow,由于很久没就过就写一道玩玩。
唯一的注意点是要拆点,分别连房间和菜(否则一个人可能会被匹配多个房间或菜)。
2025.03.13
见 DS 优化建图
见 DS 优化建图
2025.03.14
见 DS 优化建图
2025.03.15
考虑如果直接矩阵乘法判断,复杂度 \(O(Tn^3)\),爆炸。
考虑将等式 \(A \times B = C\) 左右分别乘上 \(n \times 1\) 的非零矩阵 \(D\),变为 \(A \times B \times D = C \times D\),这样两边的计算复杂度都变为了 \(O(n^2)\)!

浙公网安备 33010602011771号