关于这个关于
查看原帖
关于这个关于
416192
kbzcz楼主2024/11/5 09:45
#include<bits/stdc++.h>
using namespace std;
#define il inline
#define pb push_back
using ll=long long;
const int N=2010; 
int n;
ll a[N],f[N][2][N],ans,g[200010][12][12];
int main() {
	freopen("color13.in","r",stdin);
	freopen("color.out","w",stdout);
	int _;scanf("%d",&_);
	while(_--) {
		scanf("%d",&n);
		bool bj=0;
		for(int i=1;i<=n;i++) scanf("%lld",&a[i]),bj|=a[i]>10;
		ans=0;
		if(!bj) {
			for(int i=0;i<=n;i++)
				for(int j=0;j<=10;j++)
					for(int k=0;k<=10;k++) g[i][j][k]=-1e18;
			g[0][0][0]=0;
			for(int i=1;i<=n;i++) {
				for(int j=0;j<=10;j++) {
					for(int k=0;k<=10;k++) {
						g[i][a[i]][k]=max(g[i][a[i]][k],g[i-1][j][k]+(j==a[i])*a[i]);
						g[i][j][a[i]]=max(g[i][j][a[i]],g[i-1][j][k]+(k==a[i])*a[i]);
						ans=max({ans,g[i][a[i]][k],g[i][j][a[i]]});
					}
				}
			}
			printf("%lld\n",ans);
			continue;
		}
//		for(int i=1;i<=n;i++)
//			for(int j=0;j<=n;j++)
//				f[i][0][j]=f[i][1][j]=0;
//		for(int i=1;i<=n;i++) {
//			for(int j=0;j<=i-2;j++) {
//				f[i][0][j]=f[i-1][0][j]+(a[i]==a[i-1])*a[i];
//				f[i][1][j]=f[i-1][1][j]+(a[i]==a[i-1])*a[i];
//			}
//			for(int j=0;j<=i-1;j++) {
//				f[i][0][i-1]=max(f[i][0][i-1],f[i-1][1][j]+(a[j]==a[i])*a[i]);
//				f[i][1][i-1]=max(f[i][1][i-1],f[i-1][0][j]+(a[j]==a[i])*a[i]);
//			}
//			for(int j=0;j<=i;j++) ans=max({ans,f[i][0][j],f[i][1][j]});
//		}
//		printf("%lld\n",ans);
	}
	return 0;
}

这份代码我本地测能过#13,但luogu上挂了,请问是什么问题

2024/11/5 09:45
加载中...