您的位置:首页 > 其它

HDU-5874-Friends and Enemies-构造+找规律

2016-09-12 15:56 417 查看

题目链接

题意:岛上有m个人(每个人之间要不是朋友,要不是敌人,朋友的朋友可能是朋友,敌人的敌人可能敌人),n种石头,每种石头个数不限,每个用石头串一个项链,两个朋友之间一定至少要用一个石头颜色相同,任何两个敌人之间所有石头颜色都不一样,问对于任何一种情况(敌我关系网),是否都可以有一种项链分配法。

思路:显然这题可以转换成给你一个n求最小的ans判断ans和m的关系。

首先,n一定要>=m,因为一种显而易见的情况就是,每个人都是敌人,那每个人带一个不同的石头。

然后分析可不可以有需要石头更多的情况。我们发现可以这么构造,把人分成两堆,一堆中的人都是敌人,一堆中的一个和另外一组的都是朋友。这样设两堆分别有x和y个,就需要至少x*y个。

所以最后的ans=max((M/2)*(M-M/2),M)

最后和n比较一下就好了

#include<bits/stdc++.h>
using namespace std;
int main()
{
long long n,m,ans;
while(scanf("%lld%lld",&m,&n)!=EOF) {
ans=max(m,(m/2)*(m-m/2));
if(ans<=n) {
printf("T\n");
}
else {
printf("F\n");
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: