Problem
【SCOI2007】蜥蜴
Description
在一个行列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外。 每行每列中相邻石柱的距离为,蜥蜴的跳跃距离是,即蜥蜴可以跳到平面距离不超过的任何一个石柱上。石柱都不稳定,每次当蜥蜴跳跃时,所离开的石柱高度减(如果仍然落在地图内部,则到达的石柱高度不变),如果该石柱原来高度为,则蜥蜴离开后消失。以后其他蜥蜴不能落脚。任何时刻不能有两只蜥蜴在同一个石柱上。
Input
输入第一行为三个整数,,,即地图的规模与最大跳跃距离。以下行为石竹的初始状态,表示没有石柱,表示石柱的初始高度。以下行为蜥蜴位置,“”表示蜥蜴,“”表示没有蜥蜴。
Output
Sample Input
1 | 5 8 2 |
Sample Output
1 | 1 |
HINT
的数据满足:,
标签:网络流
Solution
简单的拆点建模题。
从源点向每个有蜥蜴的点连容量为的边,从每个能跳出去的点向汇点连容量为的边。对于石笋高度,把每个点拆成两个点,它们间的边容量为石笋高度,若位置可跳到,则从的第二个点向的第一个点连容量为的边。最后跑最大流即可。
点数少,都懒得用边表了,直接用邻接矩阵
Code
1 |
|