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\) 为根的子树,子树内关键点的个数。

\[f_i = \sum_{j \in son_i} f_j + g_j \times w_{i,j}, g_i = \sum g_j \]

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 的所有出边和入边的贡献和。

posted @ 2023-10-20 08:56  Sky390  阅读(11)  评论(0编辑  收藏  举报