有一个 的地图,地图上的每一个位置可以是空地,炮塔或是敌人。你需要操纵炮塔消灭敌人。
对于每个炮塔都有一个它可以瞄准的方向,你需要在它的瞄准方向上确定一个它的攻击位置,当然也可以不进行攻击。 一旦一个位置被攻击,则在这个位置上的所有敌人都会被消灭。保证对于任意一个炮塔,它所有可能的攻击位置上不存在另外一个炮塔。定义炮弹的运行轨迹为炮弹的起点和终点覆盖的区域。你需要求出一种方案,使得在没有两条炮弹轨迹相交的前提下,最大化消灭敌人的数量。
Constraints
$ 1 \leq n,m \leq 50 $
Solution
考虑对于每一个炮塔,将它们可以攻击的位置连成一条链。对于不能相交的限制,可以参考【bzoj3144】[Hnoi2013]切糕。
具体建图方式为:先将横着的链建好,再反着建竖着的链,最后在每一个相交点间连一条无穷大的边。
原理画图易得。
Code
1 |
|