竞选病情最严重考场代码
查看原帖
竞选病情最严重考场代码
819004
lostinue楼主2024/11/5 19:25

rt,强迫症和数学性质分析综合症

#include<bits/stdc++.h>
#define ll long long
#define rep(i,aaa,bbb) for(int i=(aaa);i<=(bbb);i++)
#define per(i,aaa,bbb) for(int i=(aaa);i>=(bbb);i--)
#define all(a) (a).begin(),(a).end()
#define pb push_back
#define pii pair<int,int>
#define l first
#define r second
#define ptln(...) print(__VA_ARGS__,"\n")
using namespace std;

template<typename T>inline void read(T&x){cin>>x;}
template<typename T,typename...Args>inline void read(T&x,Args&...args){read(x);read(args...);}
template<typename T>inline void print(const T&x){cout<<x;}
template<typename T,typename...Args>inline void print(const T&x,Args&&...args){cout<<x<<" ";print(args...);}

constexpr int inf=0x7fffffff;
constexpr int maxn=2e5+10;

int n;
int mp[1000010];
ll dp[maxn];

int main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);
	int Tms;read(Tms);
	while(Tms--){
		memset(mp,0,sizeof mp);
		memset(dp,0,sizeof dp);
		read(n);
		ll ans=0,mx=0;
		vector<pair<pii,int>>l;
		rep(i,1,n){
			int a;read(a);
			if(mp[a]&&mp[a]==i-1)ans+=a;
			else if(mp[a])l.pb({{mp[a]+1,i-1},a});
			mp[a]=i;
		}
		sort(all(l));
		l.pb({{0,0},0});//防RE 
		int j=0;
		rep(i,1,n){
			dp[i]=max(dp[i],dp[i-1]);
			if(l[j].l.l==i)dp[l[j].l.r]=max(dp[l[j].l.r],dp[l[j].l.l-1]+l[j].r),j++;
		}
		rep(i,1,n){
			mx=max(dp[i],mx);
		}
		ptln(ans+mx);
	}
	return 0;
}
2024/11/5 19:25
加载中...