[CEOI2014] Wall 思路分析

看到网上大部分题解都是直接摆个结论然后说证明和怎么做,感觉对思维并没有很多启发,毕竟上来就能猜出结论那你离 AK IOI 也不远了

从最终这个墙的形态考虑,你需要找到一棵将所有关键格连通的生成树,然后找一条不穿过任何一条树边和关键格边缘的回路,那么这个回路肯定会疯狂擦边,回路走的边是一些从一个叶子跳到另一个叶子的边,这种边就是两点最短路

考虑放宽限制,假如已经确定了树的形态,就只需跑一个从起点的右上角到左下角的最短路。只要这棵树的树边不会划到答案的最短路外面去,树的形态实际上是与答案无关的。由于走的边是一些两点最短路,那么任取一个关键格为起点,求出起点到每个关键格的最短路,就可以发现,最终答案一定完全包含了这些最短路

证明:考虑若存在一个关键格,其最短路不被完全包含,由于答案要包含这个格子,所以会把这条最短路在墙外割成一些部分,但由于最短路,这些割开的部分选上一定比原答案更优

现在唯一的限制就是最终的墙不横穿任意一条最短路,所以先建出这些最短路的最短路径树,然后对每个格点拆点连出不穿过最短路径树的边直接跑最短路即可

大部分题解中都取了 \((1,1)\) 作为第一次最短路的起点,但可以看出,实际上这个格子没有任何性质,只是方便最后求答案而已

posted @ 2023-09-15 17:06  pidan007  阅读(7)  评论(0编辑  收藏  举报