1 条题解
-
0
自动搬运
来自洛谷,原作者为

lmh
.搬运于
2025-08-24 23:15:12,当前版本为作者最后更新于2025-05-02 16:27:59,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
一个比官方题解更简单的做法。
数据范围与 T1 不同,这里 ,所以 的时间复杂度是可以接受的。这启发我们设计一个二维的
dp解决问题。的情况是简单的:将偶数位取反( 变成 , 变成 )之后相当于需要进行若干次操作使每一位都相同,此时唯一的最优策略是修改所有出现次数更少的数字,所以 。
否则,我们考虑任意一个最优策略,它在每个长度为 的全部相等的连续段当中一定修改了 个位置。
令 表示没有进行修改, 表示进行了修改操作,则 为奇数时,唯一的可能是形如 。
而 为偶数时,一定存在一个偶数位置作为分界点,前面形如 ,后面形如 。
将它们分割成若干个 和 ,如果 为奇数就把最后一个 单独拿出来。
现在对这个分割状态进行
dp,令 为前 个数进行了 次修改,最后一个连续段形如 的方案数。这里定义一种“方案”为:在这 个位置内填入 的数作为原来的 ,再在放了 的位置上进行修改使得相邻位互不相同。
初始令 。
转移方程为:
$$f_{i,j,0}=(f_{i-1,j,0}+f_{i-1,j,1}+f_{i-1,j,2})(m-1) $$$$f_{i,j,1}=(f_{i-2,j-1,0}+f_{i-2,j-1,1}+f_{i-2,j-1,2})(m-1)^2 $$每一位不能和前面一位相同,没有额外限制。
$$f_{i,j,2}=(m-1)(m-2)f_{i-2,j-1,0}+(f_{i-2,j-1,1}+f_{i-2,j-1,2})(m-1)^2 $$注意这里从 转移时第 位不能和第 位相同,因为这样会造出一个长度为奇数的连续段,它在 中被统计。
之后就可以做到 了。
可以用倍增 + FFT 做到 但是我没写。
- 1
信息
- ID
- 10957
- 时间
- 2000ms
- 内存
- 512MiB
- 难度
- 6
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者