Tricks

一点点显然但是会忘记的东西。

结论题,事实上很多时候贪心全选是对的。

扫描线

P7530 [USACO21OPEN] United Cows of Farmer John P

没地方写导致的 qwq

我们发现大致要写一个麻烦的偏序,但是如果我们维护一个扫描线,仅仅更新能更新的地方,就是我们不关心后继,扫到新的撤销前驱即可,所以我们可以变成类二维数点问题,写一棵维护系数的线段树即可。

大致上是在新的地方往前驱以前都加一,撤销前驱的系数即可。下面有形式化的代码。

P5926 [JSOI2009] 面试的考验

考虑偏序挂点。

考虑往某个点挂上 (i,ai) 假设我们已经在 ax 上挂上去了,我们发现如果要在 ay 上挂上要满足 ayai>axayayai+ax2

那么值域就满足折半,即只有 logn 个点,算出来即可。

分治,关键字 “除开一项的所有”

CF1442D Sum

妈的,学这么多年终于学到了!!

结论:必然全选完数组,然后剩下的选一个单个的。

证明:考虑选出数组,a, b 若都没选完,那么考虑选更牛逼那个接在后面。

但是我们咋做那个?

考虑分治,求 [l,mid] 时先插 [mir+1,r] 或者求 [mid+1,r] 先插 [l,mid] 即可。

事实上,不如线段树分治。

选取若干路径的问题

或者是 XOR,那个题是点边转化。

[AGC010C] Cleaning

这一类问题考虑从子树内连上去的和子树外的。

不妨设子树外的决策为 fx,这个一般要记下来。

那么考虑到 fy 这是子树内连出去的,那么可以计算出 fx=2axfy 这些是经过这个 x 这个点的。

接下来除了这个,还要考虑子树经过 x 匹配的问题,这个问题考虑最大值是否超过一半即可。

可以归纳证明。

换根 LCA Trick

lcart(u,v)=lcau,rtlcav,rtlcau,v

三者总有两种相等。

走一步,算两步

CF1749F Distance to the Path

考虑记录 fx,dx 子树内距离 d 的修改和。
考虑链上的 fx,dffax,d 这些的重复消除,维护到 x 距离为 d 的即可。
然后考虑每次爬树,不难发现跳到父亲那么要算的由 fx,d 变到了 ffax,d1 中间还有一个元素的 gap,那么考虑给 fx,d1 加上就可以了。
然后开二十个树状数组维护链上的 tag,然后考虑维护就直接差分,然后每次查询子树和即可。

posted @   Cust10  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示