码迷,mamicode.com
首页 > 其他好文 > 详细

FZU Problem 2221 RunningMan

时间:2016-04-30 16:51:34      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:

   一开始就跑偏了,耽误了很长时间,我和队友都想到博弈上去了...我严重怀疑自己被前几个博弈题给洗脑了...贪心的做法其实就是我们分两种情况,因为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的奇偶).

FZU Problem 2221 RunningMan

标签:

原文地址:http://www.cnblogs.com/jifahu/p/5448941.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!