2025/07/22 东师

模拟赛

100+100+0+0

T1

简单题 , 没什么好说的

T2

根据简单的博弈知识 , 很容易推出一个必胜/败点的递推关系 , 只需要完成换根就切掉了

我的做法是维护一个值为一个点获胜的必须要走的点 ( 若无则为0 ) , 通过换根的维护这个点来维护胜负关系的换根 .

T3

其实是全场第二简单的题 , 但我想的太复杂了 .

枚举前 \(2^k\) 个点是什么 , 后面就是简单状压 \(dp\)

切记简单的问题简单化 , 复杂的问题想好了再写 , 场上因为一眼望去觉得是容斥 , 就做了一个钦定条件后算容斥系数算了两个小时 , 这个时候一定要回头审视一下自己的思路了

T4

我们发现这几个操作构成一个对于答案的递推关系 , 也就是说 , 我们可以通过维护矩阵乘法的方法维护递推转移 .

考虑操作 \(3\) 其实就是在修改其中一个转移矩阵 , 我们用线段树维护一下就好了 .

其实都是不太有难度的题 , 但是今天没打好 , 问题在于思路方向上的问题 , 切记当始终做不出来的时候转换一下思维 .

线段树

线段树本身没什么好说的 , 来点线段树的技巧

线段树优化建图

它是用来解决这样一个问题的 , 在图论建模中 , 我们可能需要单点向区间连边一类的操作 , 这时候普通的跑复杂度就是假的了 , 面对区间 , 我们不妨想想线段树

\(CF786B\) 看起 , 用两棵线段树来搞,建两棵线段树,一棵处理入边,一棵处理出边。

之后在区间修改中 , 对于所有覆盖到的线段树节点连边 .

如果是区间向区间连边呢 ? 我们可以建一个虚点 \(P\) , 转换为两个已经能做的问题 .

均摊

这些题中的信息量趋近于减少 , 于是就可以均摊

\(P4145\) , 其中因为 \(\sqrt{\quad}\) , 操作只会导致信息量减少 , 于是就能做到均摊

\(P3747\) 由扩展欧拉定律可得下降速度飞快 , 于是产生了均摊

再比如说经典的吉司机线段树 , 就是利用了信息量不会增长的特性 , 取了min 和 secmin ,于是产生了均摊 ,通过暴力 \(dfs\) 把取 \(min,max\) 转为若干对 \(min,max\)值的修改(其实如果还有对着取max也是同理 , 因为同样不会使得数变大)

前缀最值有关的线段树

楼房重建就是其中的典型 , 它求斜率前缀严格最大值的个数

在合并两个区间的时候 , 左边的最大值可能会把右边本来能看见的一部分楼房挡住

我们发现在计算贡献时 , 由于遮挡关系 , 线段树上的信息只会递归同一侧 , 所以复杂度 \(log^2\)

线段树上二分

todo , 感觉就是利用线段树的特性 , 把在上面二分做成 \(log\)

线段树分治

我们对时间(询问)建立一颗线段树,树的节点存的信息是覆盖了这个区间的操作(询问)

模板题则是为连边 , 于是考虑遍历整颗线段树 , 维护一颗可撤销并查集

当进入一个线段树的子节点时 , 在并查集上添加覆盖这个区间的边 . 直到叶子节点(对应的就是一个询问) , 统计对应的答案 , 之后回溯撤销 , 总体 \(log^2\)

扫描线

"按顺序处理事件" , 将问题降维 .

树链剖分

把树上需要操作的东西转化为线段树上连续的一段序列(即剖分过程) , 这里是重剖 , 使得每个重链在线段树上连续 .

于是乎我们就支持了在树上动态的对链的修改与查询 , 完了就可以上线段树等数据结构了

posted @ 2025-07-22 21:43  2019yyy  阅读(10)  评论(0)    收藏  举报