zoukankan      html  css  js  c++  java
  • hdu 1847(SG函数,巴什博弈)

    Good Luck in CET-4 Everybody!

    Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 8634    Accepted Submission(s): 5587


    Problem Description
    大 学英语四级考试就要来临了,你是不是在紧张的复习?也许紧张得连短学期的ACM都没工夫练习了,反正我知道的Kiki和Cici都是如此。当然,作为在考 场浸润了十几载的当代大学生,Kiki和Cici更懂得考前的放松,所谓“张弛有道”就是这个意思。这不,Kiki和Cici在每天晚上休息之前都要玩一 会儿扑克牌以放松神经。
    “升级”?“双扣”?“红五”?还是“斗地主”?
    当然都不是!那多俗啊~
    作为计算机学院的学生,Kiki和Cici打牌的时候可没忘记专业,她们打牌的规则是这样的:
    1、  总共n张牌;
    2、  双方轮流抓牌;
    3、  每人每次抓牌的个数只能是2的幂次(即:1,2,4,8,16…)
    4、  抓完牌,胜负结果也出来了:最后抓完牌的人为胜者;
    假设Kiki和Cici都是足够聪明(其实不用假设,哪有不聪明的学生~),并且每次都是Kiki先抓牌,请问谁能赢呢?
    当然,打牌无论谁赢都问题不大,重要的是马上到来的CET-4能有好的状态。

    Good luck in CET-4 everybody!
     
    Input
    输入数据包含多个测试用例,每个测试用例占一行,包含一个整数n(1<=n<=1000)。
     
    Output
    如果Kiki能赢的话,请输出“Kiki”,否则请输出“Cici”,每个实例的输出占一行。
     
    Sample Input
    1 3
     
    Sample Output
    Kiki Cici
     
    Author
    lcy
     这题直接调用SG函数,吧所有能够取的值传进去,然后判断SG(n) 为 0 为必败点,为 1 为必胜点.这函数很强啊.
    #include <iostream>
    #include <cstring>
    #include <stdio.h>
    #include <stdlib.h>
    #include <algorithm>
    #include <map>
    using namespace std;
    const int N = 1005;
    int sg[N];
    bool Hash[N];
    void sg_solve(int *s,int t,int N)   ///N求解范围 S[]数组是可以每次取的值,t是s的长度。
    {
        int i,j;
        memset(sg,0,sizeof(sg));
        for(i=1; i<=N; i++)
        {
            memset(Hash,0,sizeof(Hash));
            for(j=0; j<t; j++)
                if(i - s[j] >= 0)
                    Hash[sg[i-s[j]]] = 1;
            for(j=0; j<=N; j++)
                if(!Hash[j])
                    break;
            sg[i] = j;
        }
    }
    int main()
    {
        int s[15];
        for(int i=0;i<=9;i++) s[i] = (1<<i); ///每次可取 1 2 4 8 16 32 64 128 256 512
        sg_solve(s,10,N);
        int n;
        while(scanf("%d",&n)!=EOF){
            if(sg[n]){
                printf("Kiki
    ");
            }else{
                printf("Cici
    ");
            }
        }
        return 0;
    }
  • 相关阅读:
    How to change hostname on SLE
    How to install starDIct on suse OS?
    python logging usage
    How to reset password for unknow root
    How to use wget ?
    How to only capute sub-matched character by grep
    How to inspect who is caller of func and who is the class of instance
    How to use groovy script on jenkins
    Vim ide for shell development
    linux高性能服务器编程 (二) --IP协议详解
  • 原文地址:https://www.cnblogs.com/liyinggang/p/5768660.html
Copyright © 2011-2022 走看看