P1413 坚果保龄球
思路分析
- 由题可知棋盘大小为 6 行 60 列,游戏开始后每秒任意行的最后一列都有可能出现若干僵尸,玩家每秒可以在任意行的第一列放置若干坚果,坚果可瞬间杀死所在行的所有僵尸,僵尸每秒向左走一列,直到走到第一列再向左走游戏失败;
- 题目要求用最少的坚果杀死所有僵尸,每个僵尸从第 60 列到第 1 列需要 59 秒,所以某行从某个僵尸出生的那一秒起到 59 秒后,期间所有改行的僵尸至少用一个坚果可以解决;
- 可以定义一个二维数组 a[ ][ ],下标分别表示某僵尸出现的行数和出现的时间,数组的值为 1 表示改僵尸存在,为 0 表示改僵尸不存在;
- 通过一个二重循环遍历数组,求出每行至少使用坚果数之和即为本题结果;
注意事项
- 由题可知:n <= 2000,t <= 100000,1 <= P <= 6;所以数组定义为 a[7][1000006];
- 数组初始化为 0;
- 行数是从 1 开始而不是从 0 开始;
代码实现
#