CodeForces - 1000D Yet Another Problem On a Subsequence

题面在这里!

好智障的一个dp啊,一段开头的数字相当于下面要跟多少个数,直接滚动数组dp就行了。。。

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1005,ha=998244353; inline void ADD(int &x,int y){ x+=y; if(x>=ha) x-=ha;} int f[N],n,a[N]; int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",a+i); f[0]=1; for(int i=1,now;i<=n;i++){
now=f[0];
for(int j=0;j<n;j++) ADD(f[j],f[j+1]);
if(a[i]>0&&a[i]+i<=n) ADD(f[a[i]],now);
} ADD(f[0],ha-1),printf("%d\n",f[0]); return 0;
}
上一篇:【Java 小实验】重写(覆写 Override)返回值类型能不能相同


下一篇:FineUI常见问题