10.12 做题总结

概况

完成 cf 难度总和: 2300 + 2300 + 2100 + 2100 + 2000 + 2000 + 900 + 2100 = 15800 2300+2300+2100+2100+2000+2000+900+2100=15800 2300+2300+2100+2100+2000+2000+900+2100=15800

被 wyq ≈ 20000 ≈ 20000 20000 吊打

简要题解

CF1422D

这道题目 2300 就过分,直接分别按照横纵坐标对传送门排序,相邻之间暴力连边。然后跑最短路就好了。

P4552

一道不错的思维题,考虑区间 [ l , r ] [l,r] [l,r] 加减 1 1 1,相当于差分数组加减 1 1 1。于是我们将差分数组大于 0 0 0 的去和小于 0 0 0 的配对,假设大于 0 0 0 的为 x x x 反之为 y y y。则最后差分数组的情况肯定是 ( 0.... , ∣ x − y ∣ ) (0....,|x-y|) (0....,xy) 所以第一问答案即为 max ⁡ ( x , y ) \max(x,y) max(x,y) 。对于第二问我们考虑如何将差分数组置 0 0 0 。那么我们可以将前面某段 0 0 0 减去 ∣ x − y ∣ |x-y| xy 或者本身减,所以可能方案数为 ∣ x − y ∣ + 1 |x-y|+1 xy+1

CF960E

考虑树形dp,我们设 f u , 0 / 1 f_{u,0/1} fu,0/1 表示与 u u u 为偶/奇数的个数。
然后考虑 up-and-down 分三种情况进行讨论即可。

1.从 u u u 子树内连出一条边向不在 u u u 子树的点连边

2.从 u u u 子树内连出一条边向在 u u u 子树不在 v v v 当前子树的点连边

3.从不在 u u u 子树的点向 u u u 子树内连边

分情况 dp 就好了

CF859E

又是分类讨论题,我们对每个人前后位置放进一个连通块。考虑一个连通块,若为树那么该连通块答案就为该块的大小。若连通块有环,相当于会发生连锁反应所以就两种情况,如果有自环那么该连通块就一种。最后乘法原理计数即可。

CF796D

我们考虑那些边可以重复,就是边的一个点 u u u 被两个特殊点都覆盖那么就可以删边。这个 bfs 模拟一下就可以了。

CF771C

又是树形 dp,我们设 f x , i f_{x,i} fx,i 表示 x x x 子树内距离 x x x 的距离 s % k = i s\%k=i s%k=i 的总步数, g x , i g_{x,i} gx,i 表示 x x x 子树内距离 x x x 的距离 s % k = i s\%k=i s%k=i 的点的个数。

f x , i = ∑ v ∈ x f v , i − 1 , g x , i = ∑ v ∈ x g v , i − 1 f_{x,i}=\sum _{v∈x}f_{v,i-1},g_{x,i}=\sum_{v∈x}g_{v,i-1} fx,i=vxfv,i1,gx,i=vxgv,i1

对于 i = 1 i=1 i=1 的我们的 f x , 1 = ∑ v ∈ x f v , 0 + g v , 0 f_{x,1}=\sum _{v∈x} f_{v,0}+g_{v,0} fx,1=vxfv,0+gv,0 因为要多跳一步了,所以额外要加这些贡献。

我们先算出以 1 1 1 为根的答案,然后换根dp一下即可。

于是答案就是 ∑ i ∑ j f i , j \sum_i\sum_j f_{i,j} ijfi,j

猜你喜欢

转载自blog.csdn.net/wangyiyang2/article/details/109039405