C. Boats Competition【1300 / 思维 暴力】

在这里插入图片描述
https://codeforces.com/problemset/problem/1399/C
数据范围很小直接枚举所有和。

#include<bits/stdc++.h>
using namespace std;
const int N=1e3+10;
int a[N],cnt[N],backup[N],t,n;
int main(void)
{
    
    
	cin>>t;
	while(t--)
	{
    
    
		cin>>n;
		memset(cnt,0,sizeof cnt);
		for(int i=0;i<n;i++) cin>>a[i],cnt[a[i]]++;
		int ans=0;
		for(int i=0;i<=100;i++)//枚举所有的和
		{
    
    
			memcpy(backup,cnt,sizeof cnt);
			int temp=0;
			for(int j=0;j<n;j++)//枚举所有的数
			{
    
    
			    if(i==a[j]*2&&backup[a[j]]<2) continue;//如果这俩数相等,且目前的数的个数不足2个
				if(i-a[j]>=0&&backup[i-a[j]]&&backup[a[j]])//如果这俩数都还有
				{
    
    
				    temp++,backup[i-a[j]]--,backup[a[j]]--;
				}
			}
			ans=max(ans,temp);
		}
		cout<<ans<<endl;
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/bettle_king/article/details/121367502