hdu 3951 - Coin Game(找规律)

这道题是有规律的博弈题目,,,

所以我们只需要找出规律来就ok了

牛人用sg函数暴力找规律,菜鸟手工模拟以求规律。。。【牢骚】

if(m>=2)

{

if(n<=m) {first第一口就可以吃掉所有的。所以first必赢,}

else {first无法一口吃掉所有的,所以second成了主动的了,如果first第一口吃掉k1个,那么明智的second只要吃掉k2个就可以了(n-k1-k2是偶数,也包括 0的),使得 剩下的数字是分成两个数字数目相等的堆,以后的工作便是first做什么,那么second就另一个堆上做什么(包括分堆操作)}

}

代码如下:

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <string>
#include <cmath>
#include <queue>
#include <stack>
#include <vector>
#include <map>

#define LL long long
#define eps 1e-8
#define N 15
#define K 15

using namespace std;

int main ()
{
    int t, k = 0;
    scanf("%d", &t);
    while(t--)
    {
        int n, m;
        scanf("%d%d",&n, &m);
        printf("Case %d: ",++k);
        if(m==1)
        {
            if(n&1) puts("first");
            else puts("second");
            continue;
        }
        if(n<=m) puts("first");
        else puts("second");
    }
    return 0;
}


posted on 2013-08-17 15:28  Primo...  阅读(197)  评论(0编辑  收藏  举报