RE7个,求条
查看原帖
RE7个,求条
1007677
bianyanze楼主2024/11/12 18:47
#include<bits/stdc++.h>
using namespace std;
int T;
int n;
const int N=2e5+10;
int dp[N],a[N],sum[N],lst[N];
int main(){
	
	scanf("%d",&T);
	while(T--){
		memset(dp,0,sizeof dp);
		memset(a,0,sizeof a);
		memset(sum,0,sizeof sum);
		memset(lst,0,sizeof lst);
		scanf("%d",&n);
		for(int i=1;i<=n;i++){
			scanf("%d",a+i);
		}
		for(int i=1;i<=n;i++){
			sum[i]=a[i]==a[i-1]?sum[i-1]+a[i]:sum[i-1];
		}
		for(int i=1;i<=n;i++){
			dp[i]=dp[i-1];
			if(lst[a[i]]){
				dp[i]=max(dp[i],dp[lst[a[i]]+1]+a[i]+sum[i]-sum[lst[a[i]]+1]);
			}
			lst[a[i]]=i;
		}
		cout<<dp[n]<<endl;
	}
	return 0;
} 

thanks~~~

2024/11/12 18:47
加载中...