P6545【CEOI2014 Wall】题解
一、定义
- 点:每个方格的四个角
- 一种筑墙方案的区域:被墙框柱的点集
我们的任务即是要确定一种合法的筑墙方案(其区域包含了所有关键方格的四个角),使得筑墙的代价最小
二、引理
-
此筑墙方案一定包含最左上角的点到每个方格的左上角的点的最短路。
-
证明:
我们用归纳调整的思想。假设我们已经求出一个合法的筑墙方案,且存在一个关键方格
引理即得证。
三、做法
现在我们的任务就是,给定一些最短路,求出包含这些最短路(即墙的区域包含所有最短路上的点)的方案的最小代价。
又因为所有最短路构成了一棵最短路树,所以我们只要满足筑墙方案不穿过最短路即可。考虑把每一个点再拆成四个小点(一个方格对应 16 个点),在原图基础上再在相邻的、不穿过任意一条最短路树的边两点之间连一条边权为 0 的边,跑最短路即可。
四、代码
实在太难实现了,先鸽子了.jpg(