HDU5874(这是什么鬼)

我真是菜哭了,这个题题意都纠结了老久。最后总算明白,这个题应该是问,当岛上有a个人时,让这a个人的敌友关系最坏,然后求这种情况下,需要最少的石子种类数,然后和b比较,如果比b大,输出F,否则,输出T。
也就是可以理解为,在(不同的敌友关系下需要的石子种类的最小值)的最大值。我一开始以为2*a是最大,后来发现不是这么简单。
看了大佬的博客,我们假设x个人互相敌对,然后有y个人与这x个人都是朋友,而这y个人互相敌对。
则有
x+y=m
x*y<=n
当x 和 y相等时,x*y<=m^2/4;
判断n和m^2/4的大小
感觉很有道理,大佬就是大佬,可是仔细一想,题意没说敌人的敌人就是朋友啊。敌人的敌人难道不能是敌人?而且题意不是说敌人必须要有两个及以上的不同石子吗?
于是在大佬的讲解上又把我自己的想法加进去了,结果也A了。而且一样的数据,不一样的输出,英语菜的我不知所措中。到底怎么才算对???
已经提问,要是他回答了我就来更新
code:

#include<cstdio>
int main()
{
    int a,b;
    while(scanf("%d%d",&a,&b)!=EOF)
    {
        if(a==1)
           printf("T\n");
        else if(a<=32)
        {
            if(b>=2*a)
                printf("T\n");
            else
                printf("F\n");
        }
        else if(a>32)
        {
            if(a/2*(a-a/2)<=b)
                printf("T\n");
            else
                printf("F\n");
        }

    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值