题解:AT_arc071_d [ARC071F] Infinite Sequence
题意
让你构造一个每个数为
-
第
项及之后的所有项都相等 -
对于每一个
,满足 个数都相同。
问你有多少种方案
思路
看到问方案,首先想到 dp
。
那么设
加上前缀和优化一下之后的式子就变成了
其中
综上所述,时间负责度为
代码如下
#include <bits/stdc++.h>
#define int long long
using namespace std;
#define rep(i, l, r) for(int i = l; i <= r; ++ i)
#define per(i, r, l) for(int i = r; i >= l; -- i)
const int N = 1e6 + 10, mod = 1e9 + 7;
int f[N], sum[N], n;
main()
{
scanf("%lld", &n);
f[0] = 1; f[1] = n; f[2] = (n * n) % mod;
sum[0] = 1;
sum[1] = (f[0] + f[1]) % mod;
sum[2] = ((f[0] + f[1]) % mod + f[2]) %mod;
rep(i, 3, n)
{
f[i] = ((f[i - 1] + sum[i - 3]) % mod + n * (n - 1) - i + 2) % mod;
sum[i] = (sum[i - 1] + f[i]) % mod;
}
printf("%lld", f[n] % mod);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步