很抱歉打扰,但真的看不出问题,玄关
查看原帖
很抱歉打扰,但真的看不出问题,玄关
416975
sbno333楼主2024/1/29 00:05

最近写的程序不知道为什么大子任务是WA,包括前几天的比赛也是,因此求条(真的无法理解小任务为什么能,大任务过不了(还是WA,没骗分)),已经自己造过数据了。

#include<bits/stdc++.h>
using namespace std;
#define int long long
struct st{
	char t;
	int sum;
	int ans;
	int xb;	
}sd[3000009];
int a[3000009];
signed main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>sd[i].t;
	}
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	int ans;
	ans=0;
	for(int i=1;i<=n;i++){
		if(sd[i].t=='('){
			sd[i].ans=sd[i-1].ans;
			sd[i].xb=i;
			if(!sd[i].sum){
				sd[i].sum=sd[i-1].ans-a[i];
			}
		}else{
			if(sd[i-1].xb==0){
				sd[i].sum=0;
				sd[i].ans=sd[i-1].ans;
				continue;
			}
			sd[i].xb=sd[sd[i-1].xb-1].xb;
			sd[i].ans=max(sd[i-1].ans,sd[sd[i-1].xb].sum+a[i]);
			sd[i+1].sum=max(sd[i].ans-a[i+1],sd[sd[i-1].xb].sum);
			//ans=max(sd[i].ans,ans);
		}
		//cout<<sd[i].ans<<" ";
	}
	cout<<sd[n].ans;
	//cin>>ans;
	return 0;
}
2024/1/29 00:05
加载中...