zoukankan      html  css  js  c++  java
  • HDU_1846 Brave Game(sg函数简化版)

     

     /*做完后看到网上很多人推的规律,还有巴什博弈。表示还没有学习巴什博弈,直接用
    sg写的,这题可以说是sg函数的简化版。最后只需判断sg[n]是否为0即可。回家看巴什
    博弈去,T_T...
    (看到队里很多人都是0MS过的,不得不佩服啊,估计网上流传的代码这题
    用sg写的我这是独此一家了,就是时间有点烂。呵呵,不过这题作为sg函数的入门题还是不
    错的)*/


    /*My Code 109+ms */

    #include <iostream>
    #include <cstdio>
    #include <cstring>

    using namespace std;

    const int N = 1007;

    int sg[N];
    int m;

    int mex(int v){
    if(sg[v] != -1) return sg[v];
    int i, tmp;
    bool vis[N] = {0};

    for(i = 1; i <= m; i++){
    tmp = v - i;
    if(tmp < 0) break;

    sg[tmp] = mex(tmp);
    vis[sg[tmp]] = true;
    }
    for(i = 0; i < N; i++){
    if(!vis[i]){
    sg[v] = i;
    break;
    }
    }
    return sg[v];
    }

    int main(){
    //freopen("data.in", "r", stdin);

    int n, t;
    scanf("%d", &t);
    while(t--){
    scanf("%d%d", &n, &m);
    if(n == m){
    puts("first");
    continue;
    }
    if(m == 1){
    if(n&1) puts("first");
    else puts("second");
    continue;
    }
    memset(sg, -1, sizeof(sg));
    sg[0] = 0; sg[1] = 1;
    mex(n);
    if(!sg[n]) puts("second");
    else puts("first");
    }
    return 0;
    }
  • 相关阅读:
    文件IO学习
    简单哈希表学习
    关于二叉树的遍历
    关于多点共线问题
    关于线程
    时间复杂度O()与KMP算法
    单链表相关
    拷贝构造函数与深浅拷贝
    在windows把python写成bat文件的坑
    python学习手册:第二十五章——oop
  • 原文地址:https://www.cnblogs.com/vongang/p/2193979.html
Copyright © 2011-2022 走看看