HDU - 6152 Friend-Graph 暴力? 拉姆齐定理

思路:
首先 卡内存,开个maxn*maxn的数组MLE,用vector 按理说 两两都是朋友也是会爆,但是据说有人用vector暴力水过了
正解是
在组合数学上,拉姆齐(Ramsey)定理是要解决以下的问题:要找这样一个最小的数n,使得n个人中必定有k个人相识或l个人互不相识。
拉姆齐定理的通俗表述:
6 个人中至少存在3人相互认识或者相互不认识。
该定理等价于证明这6个顶点的完全图的边,用红、蓝二色任意着色,必然至少存在一个红色边三角形,或蓝色边三角形。
所以说 这个题 n>=6 直接bad 否则暴力

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#define ll long long
#define inf 0x3f3f3f3f
using namespace std;
const int maxn=3e3+5;
int a[10][10];
int main()
{
	
	int t;
	scanf("%d",&t);
	while(t--)
	{
		int n;
		memset(a,0,sizeof a);
		scanf("%d",&n);
		if(n>=6)
		{
			printf("Bad Team!\n");
			int x;
			for(int i=1;i<n;i++)
				for(int j=1;j<=n-i;j++)
					scanf("%d",&x);
			continue;
		}
		int flag=1;
		for(int i=1;i<n;i++)
			for(int j=1;j<=n-i;j++)
			{
				int x;
				scanf("%d",&x);
				if(x)
					a[i][i+j]=a[i+j][i]=1;
			}
		int renshi=0,brenshi=0;
		for(int i=1;i<=n;i++)
			for(int j=i+1;j<=n;j++)
				for(int k=j+1;k<=n;k++)
					if(a[i][j]&&a[i][k]&&a[j][k]||!a[i][j]&&!a[i][k]&&!a[j][k])
						flag=0;
		if(!flag)
			printf("Bad Team!\n");
		else printf("Great Team!\n");
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值