95pts求助,玄关
查看原帖
95pts求助,玄关
1060672
wei2013楼主2024/11/29 21:25

code:

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int MAXN=2e5+5,MAXM=1e6;
int lst[MAXM],dp[MAXN],a[MAXN],p[MAXN];
signed main(){
	int t;
	cin>>t;
	while(t--){
		int n;
		cin>>n;
		memset(lst,0,sizeof(lst));
		memset(dp,0,sizeof(dp));
		for(int i=1;i<=n;i++){
			cin>>a[i];
		}
		p[1]=0;
		for(int i=2;i<=n;i++){
			p[i]=p[i-1];
			if(a[i]==a[i-1]){
				p[i]+=a[i];
			}
		}
		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]+p[i]-p[lst[a[i]]+1]);
			}
			lst[a[i]]=i;
		}
		cout<<dp[n]<<endl;
	}
	return 0;
}
2024/11/29 21:25
加载中...