一种容易想到的方法是广搜。从最早的军团开始搜,到第二个军团的时间了就把第二个军团也加进来一起搜,以此类推。这种做法的时空复杂度都是 O(n2)O(n^2)O(n2) 的,常数还很大,需要有一定的卡常经验才打得好,可惜时限 5s 几乎卡不掉多少。
一种不容易想到的方法是带权曼哈顿距离。我们只需要暴力枚举敌方,计算每一个敌方最早被消灭的时刻。容易发现,被消灭的时刻就是军团到这个敌方的曼哈顿距离+军团到达战场的时间的最小值。所以我们只需要再枚举一下军团就行了。时间复杂度还是 O(n2)O(n^2)O(n2),空间复杂度变为了 O(n)O(n)O(n)。然而实际跑起来比广搜快得多,一是因为常数极小 ,二是因为数据过水。
做法一代码如下。
做法二代码如下。