2025/07/26 东师

树形背包

\(siz\) 相关的树形背包复杂度正确的原因在于 , 每个点对会在它们 \(lca\) 时合并一次造成贡献 , 共 \(n^2\) 个点 , 写法足够有些就是 \(n^2\)

直径相关

\(dfs\) 两边的正确性可以用反证法证明 , 但更朴实常用的还是最大次大(准确讲:前者的证明来自后者)

agc005c : 首先容易想到一个结论:每个点的最远点一定是直径的端点。
那么我们先把直径构造出来,然后在直径上加点,形成一个毛毛虫即可

arc117d : 最神的一点在于 : 考虑如果c有序,发现只有相邻的c是有意义的,因为
$ 𝑐_3−𝑐_1=𝑐_2−𝑐_1+𝑐_3−𝑐_2≥𝑑𝑖𝑠(1, 2)+𝑑𝑖𝑠(2, 3)≥𝑑𝑖𝑠(1, 3) $
那么要达到最小值,就需要每一个不等号都取等
问题转化为求一个排列,最小化 $ \sum_𝑖^n[𝑝_𝑖,𝑝_{𝑖+1}] $
发现这是一个类似欧拉序的东西 , 所以答案为 2*n-直径

状态设计

一句精辟的话 : \(dp\) 实际上是把一堆能共同转移的状态压缩到了一起

P6773 : 考虑我们并不关心字数内有哪些限制还在 ( 实际上这是一个0/1 , 只有可能在或不在 ) , 我们只关心向上延申最小的限制就好了 , 因为所有子树伸出去的限制都能通过一条边的覆盖全部干掉 . 把限制挂在儿子上 , 有了这个状态表示向上延申最小的长度 , 转移是简单的 .

图上

P6846 : 一个图如果是dag,那么把所有边反向也是dag,并且这两者修改的边数之和为m,所以问题转化成求给一个无向图定向后dag个数

子集dp,𝑓_𝑆表示考虑S中的点的导出子图定向后有多少个dag

转移枚举源点集合T,其中T必须为独立集,𝑇→𝑆−𝑇中边定向唯一,𝑓_(𝑆−𝑇)转移
发现𝑆−𝑇中可能有源点,这些dag会被算多次,就容斥掉就好了

概率 期望

期望的线性性:X, Y 任意关系,都有 \(𝐸(𝑋+𝑌)=𝐸(𝑋)+𝐸(𝑌)\)
独立事件期望的可乘性:X, Y相互独立,则有 \(𝐸(𝑋𝑌)=𝐸(𝑋)𝐸(𝑌)\)
全期望公式:\(𝐸(𝑋)=∑_𝑦𝑃(𝑌=𝑦)𝐸(𝑋|𝑌=𝑦)\) ,这个公式常用与分步dp,当前节点的期望等于每一步的概率乘以下一节点的期望求和

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