HDU 1848 SG函数

简介:

这题运用博弈中的SG函数解决的,感觉初级博弈题用这个很好用但是难一些的还是不会求SG值,就是SG的模板题。

#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int k,fib[1000],f[10001];
int mex1(int p)
{
    int i,t;
    bool g[101]= {0};
    for(i=0; i<k; i++)
    {
        t=p-fib[i];
        if(t<0)
            break;
        if(f[t]==-1)
            f[t]=mex1(t);
        g[f[t]]=1;
    }
    for(i=0;; i++)
        if(!g[i])
            return i;
}
int main()
{
    fib[0]=1,fib[1]=2;
    for(int i=2; i<19; i++)
        fib[i]=fib[i-1]+fib[i-2];
    k=19;
    sort(fib,fib+k);
    memset(f,-1,sizeof(-1));
    f[0]=0;
    for(int i=1; i<=1000; i++)
        f[i]=mex1(i);
    int a,b,c;
    while(~scanf("%d%d%d",&a,&b,&c),a+b+c)
    {
        int s=f[a]^f[b]^f[c];
        if(s)
            puts("Fibo");
        else
            puts("Nacci");
    }
    return 0;
}


目录
相关文章
|
9月前
|
Java
hdu-2546-饭卡
hdu-2546-饭卡
35 0
|
9月前
|
Java 测试技术
HDU-1233-还是畅通工程
HDU-1233-还是畅通工程
45 0
|
算法 Java
HDU 2084 数塔
在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?
187 0
|
算法 Java 人工智能
|
C++
HDU1862
中文题,题意挺好理解,不过多赘述。
1282 0
|
Java 测试技术
HDU 1232 畅通工程
畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 50540    Accepted Submission(s): 26968 Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。
1028 0
|
机器学习/深度学习
HDOJ/HDU 2568 前进(简单题)
Problem Description 轻松通过墓碑,进入古墓后,才发现里面别有洞天。 突然,Yifenfei发现自己周围是黑压压的一群蝙蝠,个个扇动翅膀正准备一起向他发起进攻! 形势十分危急! 好在此时的yifenfei已经不是以前那个经常被lemon抢走MM的菜鸟了!面对众多蝙蝠的嗜血狂攻,只见yifenfei使出轻灵的剑法,刷,刷,刷,瞬间搞定…… 现已知yifenfei使用了2招(剑招A和剑招B):剑招A,一招能杀死一半的蝙蝠。
988 0