【2021寒假集训营第一场】A-串 [dp]

https://ac.nowcoder.com/acm/contest/9981/A

题目链接
思路:
图片说明
(随便说两句:和出题人不一样的想法可能一定程度上源于我们是不一样的选手,兰子数学比较好,习惯手推,我作为一个dp图论手个人则更喜欢能用状态解决的都交给dp的状态来解决。)

#include <bits/stdc++.h>
using namespace std;
long long f[1000100][4];
const int p = 1e9+7;
int n;
int main()
{
    long long ans = 0;
    cin >> n;
    f[1][0] = 25;
    f[1][1] = 1;
    f[1][2] = 0;
    for (int i = 2; i <= n; i++)
    {
        f[i][0] = (f[i-1][0] * 25) % p;;
        f[i][1] = (f[i-1][1] * 25 + f[i-1][0]) % p ;
        f[i][2] = (f[i-1][1] + f[i-1][2] * 26) % p ;
        ans = (ans+ f[i][2])%p;
    }
    cout << ans;
    return 0;
}
全部评论
解法二的第二个递推式若为:f[i][1] = i ^ 26 - f[i][2] - f[i][0]就和解法一相同了。 两个解法的区别唯一不同点在于对于有u无us的式子的理解上,解法是容斥原理去计算(总的 - 有us - 无u),解法二是正向计算(之前无u尾部加u + 之前有u无us * 25(尾部任意加非s))
1 回复 分享
发布于 2021-02-02 01:42

相关推荐

评论
56
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务