题解:AT_kupc2016_i ティッシュ配り

xukehg

2024-11-18 19:26:21

Solution

很好的题!

先考虑 c = 1 如何处理。很明显每个机器人之间可以独立,且先造机器人再发传单的策略一定不劣。设 f_{i,j} 表示 i 号机器人在 j 秒内最多能发几张传单。如果 2 \times (i - j) < i,即造机器人没有好处,我们就不造机器人,f_{i,j} = j。否则我们就造一个机器人出来,让生产的机器人在 i - j 秒内收益最大化,即 f_{i,j} = f_{i,i - j} + f_{i + 1,i - j}。注意到制造 i 型机器人至少要 \frac{i \times (i - 1)}{2} 秒,故上限为 \sqrt{n} 级别。最终答案为 f_{1,n}

现在考虑 c \neq 1 的情况,显然有贡献 f_{1,n / c} \times c。但显然不对,因为还有 n \bmod c 秒。我们可以记 g_{i,j} 表示 f_{i,j} 取最大时有多少个机器人,则答案为 f_{1,n / c} \times c + g_{1,n / c} \times (n \bmod c)。有没有可能少发传单,多造一些机器人更优呢?答案是不能。因为多早一个机器人至少要 c 秒,而此时已经不足 c 秒,收不回成本,故答案有正确性。

记录。