您的位置:首页 > 其它

hdu 5874 Friends and Enemies

2016-09-11 22:08 363 查看

题目

题意:

某座岛上 有m个人,有n种颜色的珠子。现在每个人必须要带上一个项链。人与人之间要么是朋友要么是敌人。

如果是朋友,那么他们的项链必须有至少一个相同颜色的珠子,否则他们的项链不能有任何一个相同颜色的珠子。

解:

现在需要知道最多需要种多少颜色的珠子才能解决问题。

假设一开始所有人的项链上都没有珠子,那么当前答案是0,所有人互为敌人。

由于朋友关系,会使答案增加,现在开始考虑某一个人的朋友关系。将某个人拉出当前集合,和其余人连边,表示他们是朋友关系。因为其余人均为敌对关系,所以每连一条边,答案会+1。所以如果有m人,当前答案最多为m-1。现考虑将第二个人拉出点集,和剩下的人连边。无论拉出点集的人是何关系1,答案最多增加m-3,就是m-1+m-3…直至两边人数最接近为止。

ans=m/2*(m-m/2);

代码:

#include<cstdio>
#include<iostream>

using namespace std;
typedef long long ll;
ll m,n;
int main()
{
std::ios::sync_with_stdio(false);
while(cin>>m>>n)
{
if(n>=m/2*(m-m/2) )  cout<<"T"<<endl;
else cout<<"F"<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: