题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5874
题目大意:
给你m个人,n块颜色不同的石头。m个人当中,没两个人不是敌人就是朋友。现在这m个人要用石头给自己做一串项链,同时要满足两种要求:1、朋友之间的项链至少有一个是相同的;2、敌人之间的项链没有相同的。 如果可以做到的话,输出T否则输出F。
本题思路 :
因为我们不知道谁是敌人谁是朋友,所以要找出特殊的情况。 以6个人为例;
A B C A B C D A B C D E
D E F E F F
(1) (2) (3)
默认分为两个阵营。每个阵营里面都互为敌人,但两个阵营之间都互为朋友。那么在第(1)种情况中,石头的数目至少要大于等于3*3,第(2)种情况中,数目要大于等于4*2,第(3)种情况中数目要大于等于5*1。所以只要要保证n大于等于9.
AC代码:
#include<stdio.h>
int main()
{
long long n,m;
while(~scanf("%lld%lld",&n,&m))
{
long long a=n*n/4;
if(a<=m) printf("T\n");
else printf("F\n");
}
return 0;
}
知识点:
1、注意取整的问题。a=n/2,a*a;和a=n*n/4不同。
2、本题的思路很重要。