[USACO24OPEN] Cowreography G 题解
这题有点性质题的意思了(刚好是我不擅长的)。
首先我们分析题意,它给我们两个 01 字符串,并给一个 \(k\) 表示一步交换的最长距离,求最少步数。
我们经过分析可以知道对于一个点,移动到另一个点,所需的代价是 \(\lceil\frac{|x-y|}{k} \rceil\) 这里的 \(x,y\) 指的是两点的坐标。
假设 \(y>x\) 代价就是 $\lceil \frac{y-x}{k}\rceil $。
这里我们假设没有向上取整的符号,他们求和的值就是定值(就是第一个部分分的值),那对于每次选择的两个点,可以算出这次选择比不向上取整亏了多少。
有点难理解?假设 \(\frac{y-x}{k} = \frac{1}{3},\lceil \frac{y-x}{k}\rceil=1\) 那我们就亏了 \(\frac{2}{3}\) 步,我们就是要求这个亏的步数的最小值。
容易知道 \((y-x)\mod k\) 如果越大,亏的最小,当然相等的时候就不亏了。
即 \((y\mod k -x\mod k )\mod k\) 越大越好,那么假设 \(y\) 已知,那么我们应该选 \(x\mod k\) 中大于 \(y\mod k\) 的最大的,反之取一个最小的即可。
代码和其他的题解没什么差别,这里就不放了。

浙公网安备 33010602011771号