打的20分代码,本地测答案时间空间都没问题,不知道为什么全MLE,512M,把map改成数组或者改数组大小都不行,服了
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<vector>
#include<queue>
#include<map>
using namespace std;
const int N = 1e5 + 10;
int b[21],n,a[N],c[N],m,ans,cnt;
map <int,int> mp;
bool check()
{
int res = 0;
for(int i = 2;i <= n;i ++)
{
if(!c[i]) continue;
for(int j = i-1;j >= 1;j --)
{
if(b[i] == b[j])
{
if(a[i] == a[j])
res += a[i];
break;
}
}
}
ans = max(ans,res);
}
void dfs(int k)
{
if(k > n)
{
check();
return ;
}
for(int i = 1;i <= 2;i ++)
{
b[k] = i;
dfs(k+1);
}
}
int main()
{
freopen("color.in","r",stdin);
freopen("color.out","w",stdout);
int T;cin>>T;
while(T--)
{
ans = 0;cnt = 0;
scanf("%d",&n);
for(int i = 1;i <= n;i ++)
{
scanf("%d",&a[i]);
if(mp[a[i]]) c[i] = 1;
mp[a[i]] = 1;
}
dfs(1);
printf("%d\n",ans);
}
return 0;
}