随便写了个dp,结果样例都没过。。。
  • 板块P4933 大师
  • 楼主STUDENT00
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/10/6 20:35
  • 上次更新2023/10/27 08:25:35
查看原帖
随便写了个dp,结果样例都没过。。。
658786
STUDENT00楼主2022/10/6 20:35

代码如下:

#include<bits/stdc++.h>
#define mod 998244353 
using namespace std;
int n,h[1010],dp[1010][20010][2],ans,w=1e9,v;
vector<int> c[20010];
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d",&h[i]);
		v=max(v,h[i]);
		w=min(w,h[i]);
		c[h[i]].push_back(i);
	}
	for(int i=1;i<=n;i++){
		for(int j=0;j<=v;j++){
			for(int z=0;z<=1;z++){
				dp[i][j][z]=1;
				int t=h[i]+j*(z?1:-1);
				if(t<w||t>v) continue;
				for(int k=0;k<c[t].size()&&c[t][k]<i;k++){
					if(h[c[t][k]]>=t) dp[i][j][z]=(dp[i][j][z]+dp[c[t][k]][j][z])%mod;
				}
				ans=(ans+dp[i][j][z]-1)%mod;
			}
		}
		ans++;
	}
	printf("%d",ans);
	return 0;
}
2022/10/6 20:35
加载中...