题解 P3413 【SAC#1 - 萌数】

这道题刚开始正向思维,然后处理重复的时候咕咕了。

参考了@巨型方块 大佬的题解后AC了,在这里就说几个我觉得比较重要或是容易被忽略的点,然后补充一些跳过的证明。


这道题的状态可以设为dp[i][j][k],意思是长度为i,然后第i位为j,第i-1位为k的不是萌数的数量。

那么为什么我们只需要枚举两位呢?

这是因为所有的回文数都必定可以简化为aa和aba中的一种,证明如下:


I. 对于长度小于等于3的回文数,显然即为以上两种中的一种。(一位数忽略)

II. 对于长度大于3的回文数,讨论其奇偶性。
i. 对于长度为奇数的回文数,必定可以表示为形如a_1a_2...a_nba_n...a_2a_1的形式,由于包含a_nba_n即为aba形式,所以可以简化。
ii. 对于长度为偶数的回文数,必定可以表示为形如a_1a_2...a_na_n...a_2a_1的形式,同上可以简化。

状态转移比较水,没有什么需要特别注意的事项。

还有一点是本题需要开long long,最开始我看到膜1e9+7就只用了int,于是爆60。

猜你喜欢

转载自www.cnblogs.com/ilverene/p/9846351.html