20230724练习总结

发布时间 2023-07-25 10:19:34作者: 牛肉爱吃dks

CF627F

这个题的题面翻译其实就已经把做法提示得很明显了。

每一次操作相当于是把 \(0\) 移动到相邻的节点上。

考虑不加边,那接判断 \(0\) 移到后是否相同即可。

现在要加一条边,可以先把 \(0\) 移动到位,判断是否相等。可以观察到如果加一条边影响的应该是一个环——顺移一个位置。

于是可以找到需要改变的点,如果和 \(0\) 一起无法构成一条路径则无解,否则将初始路径上那部分减掉再加上多出来的部分就是答案。

CF1726D Tree Elimination

树上的计数题树形 dp 肯定是要在考虑范围内的,如果树形 dp 做不了就考虑推式子。

理解一下题意,就是找擦除标记的方案数。考虑树形 dp,设 \(f_{u,0/1/2/3}\) 表示 \(u\) 被父边之前的边消除 / 被父边消除 / 被父边之后的边消除 / 未被消除。

\(u\) 不被父边消除,即 \(f_{u,0/2}\),那么假设消除 \(u\) 的边对应的儿子为 \(v\),有:

  • \(v\) 不能在 \((u,v)\) 之前被消除,即 \(f_{v,2/3}\)

  • 对于 \((u,w)\)\((u,v)\) 之前的 \(w\in son(u)\)\((u,w)\) 不能消除 \(u\),所以 \(w\) 必须被父边消除,即 \(f_{w,1}\)

  • 对于 \((u,w)\)\((u,v)\) 之后的 \(w\in son(u)\)\((u,w)\) 已经无法再消除点,所以 \(w\) 无法被父边消除,即 \(f_{w,0/2/3}\)

\(u\) 被父边消除,即 \(f_{u,1}\)

  • 对于 \((u,v)\)\(u\) 父边之前的 \(v\in son(u)\)\(v\) 必须在 \((u,v)\) 之前被消除,即 \(f_{v,0/1}\)

  • 对于 \((u,v)\)\(u\) 父边之后的 \(v\in son(u)\)\(v\) 已经无法被父边 \((u,v)\) 消除,即 \(f_{v,0/2/3}\)

\(u\) 未被消除,则 \(\forall v\in son(u)\) 都要被父边消除或在父边之前被消除,即 \(f_{v,0/1}\)