题意:三堆石子,每次能拿走斐波那契数个石子,先取完石子胜,问先手胜还是后手胜  石子个数<=1000 多组数据

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

 #include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<vector> using namespace std; const int MAXN = ;
int n, m, p, lx;
int f[MAXN], sg[MAXN];
bool tf[MAXN]; template <typename tn> void read (tn & a) {
tn x = , f = ;
char c = getchar();
while (c < '' || c > ''){ if (c == '-') f = -; c = getchar(); }
while (c >= '' && c <= ''){ x = x * + c - ''; c = getchar(); }
a = f == ? x : -x;
} int get_f() {
f[] = ;
f[] = ;
f[] = ;
int i;
for (i = ; f[i - ] <= ; ++i) f[i] = f[i - ] + f[i - ];
return i - ;
} void get_() {
sg[] = ;
sg[] = ;
for (int i = ; i <= ; ++i) {
for (int j = ; j <= ; ++j) tf[j] = ;
for (int j = ; j <= lx && f[j] <= i; ++j) {
tf[sg[i - f[j]]] = ;
}
int j = ;
while (!tf[j] && j <= ) ++j;
sg[i] = j;
}
} int main() {
lx = get_f();
get_();
read(n);
read(m);
read(p);
while (n != || m != || p != ) {
if (sg[n] ^ sg[m] ^ sg[p]) printf("Fibo\n"); else printf("Nacci\n");
read(n);
read(m);
read(p);
}
return ;
}

HDU1848 Fibonacci again and again 博弈 SG函数的更多相关文章

  1. S-Nim HDU 1536 博弈 sg函数

    S-Nim HDU 1536 博弈 sg函数 题意 首先输入K,表示一个集合的大小,之后输入集合,表示对于这对石子只能去这个集合中的元素的个数,之后输入 一个m表示接下来对于这个集合要进行m次询问,之 ...

  2. HDU 1848 Fibonacci again and again (斐波那契博弈SG函数)

    Fibonacci again and again Time Limit: 1000MS   Memory Limit: 32768KB   64bit IO Format: %I64d & ...

  3. HDU 1848 Fibonacci again and again【SG函数】

    对于Nim博弈,任何奇异局势(a,b,c)都有a^b^c=0. 延伸: 任何奇异局势(a1, a2,… an)都满足 a1^a2^…^an=0 首先定义mex(minimal excludant)运算 ...

  4. hdu 3032(博弈sg函数)

    题意:与原来基本的尼姆博弈不同的是,可以将一堆石子分成两堆石子也算一步操作,其它的都是一样的. 分析:由于石子的堆数和每一堆石子的数量都很大,所以肯定不能用搜索去求sg函数,现在我们只能通过找规律的办 ...

  5. HDU-4678 Mine 博弈SG函数

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4678 题意就不说了,太长了... 这个应该算简单博弈吧.先求联通分量,把空白区域边上的数字个数全部求出 ...

  6. hdu_1848_Fibonacci again and again(博弈sg函数)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1848 题意:给你3堆石子,每次只能取fibonacci数的石子,问先手是否能赢 题解:SG函数模版题 ...

  7. (转)博弈 SG函数

    此文为以下博客做的摘要: https://blog.csdn.net/strangedbly/article/details/51137432 ---------------------------- ...

  8. 尼姆博弈+SG函数

    博弈这个东西真的很费脑诶.. 尼姆博奕(Nim Game):游戏者轮流从一堆棋子(或者任何道具)中取走一个或者多个,最后不能再取的就是输家.当指定相应数量时,一堆这样的棋子称作一个尼姆堆 当n堆棋子的 ...

  9. 【转】博弈—SG函数

    转自:http://chensmiles.blog.163.com/blog/static/12146399120104644141326/ http://blog.csdn.net/xiaofeng ...

随机推荐

  1. CentOS 6.5 下源码搭建LAMP环境

    参考网站: http://wenku.baidu.com/link?url=Cvkqss2E9mnxXOZigMWPaCfqwsBxnm0sZ4aKE2oLAgQ888XxeC0DWOChxVqiHz ...

  2. SparkStreaming整合kafka编程

    1.下载spark-streaming-kafka插件包 由于Linux集群环境我使用spark是spark-2.1.1-bin-hadoop2.7,kafka是kafka_2.11-0.8.2.1, ...

  3. Mysql 5.7 单机单实例

    参考文章 https://www.xiaocoder.com/2017/03/17/mysql-installation-guide/ 下载5.7的mysql 社区版包 https://cdn.mys ...

  4. 教你用CMD命令查询域名的DNS解析记录:A,NS,MX,CNAME,TXT

    1.查询域名的A记录 nslookup -qt=A qqgzs.com 当然查询A记录你直接用ping命令来ping域名也可以获得A记录. 2.查询域名的NS记录 nslookup -qt=NS qq ...

  5. 多wan示意图

    此时计算机的网关可以任意选择其中的一台路由器的ip地址.

  6. php解析url并得到url中的参数及获取url参数

    <?php $url = 'http://www.baidu.com/index.php?m=content&c=index&a=lists&catid=6&ar ...

  7. BT.656 NTSC制式彩条生成模块(verilog)

    BT.656 NTSC制式彩条生成模块(verilog) 1.知识储备 隔行扫描是将一副图像分成两场扫描,第一场扫描第1,2,5,7...等奇数行,第二场扫描2,4,6,8...等偶数行,并把扫奇数行 ...

  8. 怎样在Qsys系统中添加第三方IP核

    1.新建Quartus II工程 2.新建Qsys系统 3.如果没有我们需要添加的IP,需要自己额外添加 4在我们新建的Quartus工程里面新建一个文件夹,命名为ip; 5.将我们已经下载好的IP文 ...

  9. C++11--智能指针shared_ptr,weak_ptr,unique_ptr <memory>

    共享指针 shared_ptr /*********** Shared_ptr ***********/ // 为什么要使用智能指针,直接使用裸指针经常会出现以下情况 // 1. 当指针的生命长于所指 ...

  10. 单元素枚举类型singleton模块

    public enum Elvis { INSTANCE; public void leaveTheBuilding() { System.out.println("Whoa baby, I ...