2020.11.25提高组模拟 总结
2020.11.25【NOIP提高A组】模拟
又是成功爆炸的一场模拟赛......
T1. 6891 太空漫步(walking)
第一眼构造自动机,设 \(f[i][j]\) 表示匹配串到 \(i\),自动机到 \(j\) 是否可行,\(O(10^8)\) 转移即可。
但是感觉 \(1e8\) 过不了于是想了好久,结果最后告诉我甚至不用构造自动机,第二维设成模式串到 \(j\) 就可以了emmm
T2. 6892 树的解构(deconstruct)
考虑删除每一条边对答案的贡献,发现贡献分成了四部分难以统计,于是我赛时就炸了......
其实正解也不难,考虑每个点对答案的贡献,点 \(u\) 能在祖先 \(f\) 删边时产生 \(1\) 的贡献当且仅当 \((f, u)\) 之间的所有边中,\(f\) 向 \(u\) 的边是最早被删除的,也就是说对于 \(f\),\(u\) 产生 \(1\) 的贡献的概率为 \(\frac{1}{dep_u - dep_f}\)。
那么 \(u\) 对答案期望的贡献为 :\(\sum \limits_{d = 1}^{dep_u - 1}{\frac{1}{d}}\)
最后答案即为:
\[\sum_{i = 1}^{n}{\sum_{d = 1}^{dep_i - 1}{\frac{1}{d}}}
\]
前缀和 \(O(n)\) 可以求出答案。(默认 \(dep_1 = 1\))
T3. 6893 小 T 与灵石(stone)
比赛的时候没有什么想法,听说有人给剖了......
正解也比较巧妙,易证,\(dist(x, p_j)\) 取得最大值时 \(p_j\) 一定为 \(p\) 组成树的直径的端点。
那么找出直径后,在新建节点链接直径的中点,边权为直径的一半,为避免小数可把边权 \(\times 2\),如果中点在边上,则新建两个节点分别连接边的两个端点,边权为直径的一半 \(+ 1\)。
这样建出新图后,\(g(x)\) 即为 \(x\) 到最近的新建点的距离。
\(T4\)
暂时不会唔