• hdu 5795


    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5795

    题意:一个n堆的取石子游戏,每次可以取一堆中的任意个,或者将当前堆分为三个非空堆。求先手/后手必胜。

     思路:打表sg函数找规律。

    #include <iostream>
    #include <stdio.h>
    #include <algorithm>
    #include <string.h>
    using namespace std;
    #define N 1000100;
    #define LL long long
    int sg[200],vis[200];
    /*void st()
    {
         int i,j,k;
         sg[0]=0;
         for(i=1;i<100;i++)
         {
             memset(vis,0,sizeof(vis));
             for(j=0;j<i;j++)
                 vis[sg[i-j]]=1;
             if(i>=3)
             {
                 for(j=1;j<i-2;j++)
                   for(k=1;k<i-2;k++)
                         if(j+k<i)
                            vis[sg[j]^sg[k]^sg[i-k-j]]=1;
             }
             j=0;
             while(vis[j]) j++;
             sg[i]=j;
             printf("%d
    ",sg[i]);
         }
    }*/
    int main()
    {
         int t,n,a;
         //st();
         cin>>t;
         while(t--)
         {
             int  ans=0;
             scanf("%d",&n);
             for(int i=0;i<n;i++)
             {
                 scanf("%d",&a);
                 if(a%8==0) a-=1;
                 else if (a%8==7) a+=1;
                 ans^=a;
             }
             printf("%s
    ",( ans ? "First player wins." : "Second player wins."));
         }
        return 0;
    }
  • 相关阅读:
    平时十六测
    平时十五测
    平时十四测
    poj 1486 Sorting Slides
    POJ 3621Sightseeing Cows
    POJ 2728 Desert King
    POJ3111 K Best
    NOIopenjudge 407:Heritage
    POJ#2065. SETI
    HDU 4607 Park Visit
  • 原文地址:https://www.cnblogs.com/yuanbo123/p/5741125.html
Copyright © 2020-2023  润新知