TLE求助
查看原帖
TLE求助
521283
wangif424楼主2022/11/23 19:56

记录详情

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n;
int a[401],s[401];
int dp[401][401];
int ans;
inline int read(){
	register int r=0;register char c=getchar();
	while(c>'9'||c<'0')c=getchar();
	while(c<='9'&&c>='0')r=(r<<3)+(r<<1)+c-'0',c=getchar();
	return r;
}
signed main(){
	n=read();
	for(int i=1;i<=n;i++){
		a[i]=read();
		dp[i][i]=1;
		s[i]=s[i-1]+a[i];
	}
	for(int len=1;len<n;len++){
		for(int l=1,r=l+len;l<n&&r<=n;r++,l++){
			for(int i=l;i<r&&!dp[l][r];i++){
				if(s[i]-s[l-1]==s[r]-s[i] && dp[l][i] && dp[i+1][r])dp[l][r]=1;
				for(int j=i+1;j<r&&!dp[l][r];j++){
					if(dp[i+1][j] && s[i]-s[l-1]==s[r]-s[j] && dp[l][i] && dp[j+1][r]){
						dp[l][r]=1;
					}
				}
			}
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=i;j<=n;j++){
			if(dp[i][j])ans=max(ans,s[j]-s[i-1]);
		}
	}
	cout << ans;
	return 0;
}
2022/11/23 19:56
加载中...