求助爆搜MLE
查看原帖
求助爆搜MLE
1040902
Takanashi_Hina楼主2024/11/4 22:00

打的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;
}
2024/11/4 22:00
加载中...