zoukankan      html  css  js  c++  java
  • hdu 4664 Triangulation 博弈论

    看到这题时,当时还不会做,也没搞懂sg函数,于是狠狠的钻研了下博弈论,渐渐的知道了sg函数……

    现在在来做这题就很容易了,1A

    打表容易发现在80左右的时候就出现循环节了

    代码如下:

     1 #include<stdio.h>
     2 #include<cstring>
     3 #define in(x) scanf("%d",&x)
     4 int sg[101];
     5 bool vis[101];
     6 int getsg(int x)
     7 {
     8     if(sg[x]>=0) return sg[x];
     9     memset(vis,0,sizeof(vis));
    10     for(int i=0;i<=x-i-2;i++)
    11         vis[getsg(i)^getsg(x-i-2)]=1;
    12     int j=0;
    13     while(vis[j]) j++;
    14     return sg[x]=j;
    15 }
    16 int get(int i)
    17 {
    18     if(i>=100){
    19         i=i%34;
    20         while(i+34<=100) i+=34;
    21     }
    22     return sg[i];
    23 }
    24 int main(){
    25     int t,i,ans,j,n;
    26     memset(sg,-1,sizeof(sg));
    27     sg[0]=0;
    28     for(i=1;i<=100;i++){
    29         sg[i]=getsg(i);
    30     }
    31     in(t);
    32     while(t--){
    33         in(n);
    34         ans=0;
    35         for(i=0;i<n;i++){
    36             in(j);
    37             ans^=get(j);
    38         }
    39         puts(ans==0?"Dave":"Carol");
    40     }
    41     return 0;
    42 }
    View Code
  • 相关阅读:
    poj3686 Windys
    poj3155 Hard Life
    luoguP2774 方格取数问题
    poj3469 Dual Core CPU
    poj3281 Dining
    luogu P3410 拍照
    离散化
    最短路(SPFA)
    lower_bound && upper_bound
    gcd
  • 原文地址:https://www.cnblogs.com/xin-hua/p/3253588.html
Copyright © 2011-2022 走看看