zoukankan      html  css  js  c++  java
  • FZU Problem 2221 RunningMan(贪心)

       一开始就跑偏了,耽误了很长时间,我和队友都想到博弈上去了...我严重怀疑自己被前几个博弈题给洗脑了...贪心的做法其实就是我们分两种情况,因为A先出,所以B在第一组可以选择是赢或输,如果要输,那直接不上人,而A已经赢了一场,所以A只要再赢一场就可以了,A的最优策略是把自己剩下的全上去,即为(a,n-a,0)的形式,B的最优为(0,m-1,1)的形式,若A要赢就是(n-a) >= (m-1).如果B选择在第一场赢的话,那B应该在第一场放上a+1个人,A的最优为(a,(n-a)/2,(n-a)/2)的形式,因为不能多放也不能少放,(话说多放了不就是少放了吗..),所以平均是最优的,B的最优形式(a+1,m-a-1,0),A要赢的话就是(n-a)/2 >= m-a-1,最后得出n >= 3*(m-1) / 2;

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    int main()
    {
        int t;
        scanf("%d",&t);
        double n,m;
        while(t--)
        {
            scanf("%lf%lf",&n,&m);
            if(n >= 3*(m-1)/2)
            puts("Yes");
            else puts("No");
        }
        return 0;
    }

    上面是一种做法,也可以讨论m的奇偶性,若m为奇数,则m可以表示为2*k + 1 = m,此时若A的形式为(k,k,k)则A总能赢两局,若m为偶数,则m = 2*k,此时A为(k,k,k-1)时A必赢两局,一种较为极端的考虑方式,满足n >= 3*k即可(需要注意讨论m的奇偶).

  • 相关阅读:
    如何使用VS2013进行单元测试和查看代码覆盖率
    荔枝架构演进历程读后感
    关于海尔电商峰值系统架构读后感
    苏宁易购:商品详情系统架构设计读后感
    第二阶段冲刺第四天
    第二阶段冲刺第五天
    第二阶段冲刺第三天
    第二阶段冲刺第二天
    第二阶段冲刺第一天
    第一阶段末尾
  • 原文地址:https://www.cnblogs.com/jifahu/p/5448941.html
Copyright © 2011-2022 走看看