20231018 NOIP 模拟赛
时间安排
7:50~8:00
看题,只会 A。
8:00~8:10
写完 A。
8:10~9:00
推式子+写 40pts,少乘了一个 \(n-i+1\) 调了半天。
9:00~9:01
看了一眼 C 的式子,猜一手结论。
9:01~10:21
觉得可以换根,写个暴力 \(dp\)。
10:09 会了 50pts,换下根就行了,10:21 调出来了。
10:21~10:50
给 B 和 C 加取模。
10:50~11:40
写 D 的暴力+罚坐
11:40~11:50
太废物了,突然会线段树维护了。写不完了哭死。
总结
别少加 +mod
,强转的时候别加错位置。
痛失 55pts。
题解
2429. T3-打扫房间
题目里给的式子等价于 \(\sum_{i=1}^m\sum_{j=1,i\ne j}^m dist(a_{i-1}, a_{i})\)。
50pts:
设 \(f_i\) 表示以 \(i\) 为根的子树,到子树内关键点的距离和。
为了转移,设 \(g_i\) 表示以 \(i\) 为根的子树,子树内关键点的个数。
100pts:
做法 1
zpl:你都知道这个式子而且会换根了,为什么不会满分。
设 \(cost_i\) 表示 \(i\) 这个将 \(i\) 点的邻边增加 1 后对答案的贡献。
\(cost_i = 2 \times (m - 1) + 2 \times \sum_{a, b \in i, a \ne b} g_a \times g_b\)。
即两个关键点直接相连的贡献+其他关键点经过该点的贡献,\(\sum\) 可以用前缀和优化掉。
那么修改就是 \(cost_i \times k\)。
做法 2
套路,对每条边考虑,一条边 \((a, b)\) 的贡献显然是 \(g_a \times g_b\),可以直接 \(dfs\)。
那么 \(cost_i\) 就是 i 的所有出边和入边的贡献和。