WA 0分,感觉思路有问题
  • 板块P1430 序列取数
  • 楼主xxxalq
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/8/16 09:36
  • 上次更新2023/11/3 03:27:58
查看原帖
WA 0分,感觉思路有问题
322437
xxxalq楼主2023/8/16 09:36
#include<iostream>
using namespace std;
int T,n,a[1005],dpl[1005],dpr[1005],ans;
void solve(){
	ans=0;
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
	}
	int l=1,r=n,ll,rr;
	bool flag=true;
	while(l<=r){
		if(l==r){
			if(flag){
				ans+=a[l]; 
			}
			break;
		}
		dpr[l-1]=dpl[r+1]=0;
		ll=r,rr=l;
		for(int i=l;i<=r;i++){
			if(dpr[i-1]<0){
				rr=i;
			}
			dpr[i]=max(0,dpr[i-1])+a[i];
		}
		for(int i=r;i>=l;i--){
			if(dpl[i+1]<0){
				ll=i;
			}
			dpl[i]=max(0,dpl[i+1])+a[i];
		}
		if(flag){
			ans+=max(dpl[l],dpr[r]);
		}		
		if(dpr[r]>=dpl[l]){
			r=rr-1;
		}else{
			ans+=dpl[l];
			l=ll+1;
		}
		flag=!flag;
	}
	cout<<ans<<"\n";	
	return;
}
int main(){
	scanf("%d",&T);
	while(T--){
		solve();
	}
	return 0;
}
2023/8/16 09:36
加载中...