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

题意:游戏规则如下:

1、  这是一个二人游戏;
2、  一共有3堆石子,数量分别是m, n, p个;
3、  两人轮流走;
4、  每走一步可以选择任意一堆石子,然后取走f个;
5、  f只能是菲波那契数列中的元素(即每次只能取1,2,3,5,8…等数量);
6、  最先取光所有石子的人为胜者;

思路:我们需要找到一个新的函数f,对于局面 S=(a1,a2,a3,……an),#S=f(a1)+f(a2)+……+f(an)。若#S不等于0,则先手必胜,否则后手必胜。得到的结论是:设$S(x)表示x的下一步所有可能的局面,$S(x)={S1,S2,……Sk},g(x)={#S1,#S2,……,#Sk}。那么f(x)=mex{g(x)},也就是这样的f满足#S=0,则对于S的任意后继状态T,#T!=0;#S!=0,则存在一个后继T,#T=0。

 #include <iostream>#include <cstdio>#include <vector>#include <string.h>using namespace std;int n,m,p;int f[1005];void init(){vector<int> V;int i,j;V.push_back(1);V.push_back(2);while(V[V.size()-1]<=1000){i=V[V.size()-1];j=V[V.size()-2];V.push_back(i+j);}f[0]=0;f[1]=1;int visit[1005];for(i=2;i<=1000;i++){memset(visit,0,sizeof(visit));for(j=0;j<V.size()&&V[j]<=i;j++){visit[f[i-V[j]]]=1;}for(j=0;visit[j];j++);f[i]=j;}}int main(){init();while(scanf("%d%d%d",&m,&n,&p),m||n||p){int x=f[m]^f[n]^f[p];if(x) puts("Fibo");else puts("Nacci");}return 0;}

  

HDU 1848 Fibonacci again and again(博弈)相关推荐

  1. (step8.2.6)hdu 1848(Fibonacci again and again——组合博弈)

    题目大意:输入3个整数m,n,p,分别表示3堆石头中的石头个数 解题思路: 1)斐波那契数列的第16个数fib[16] == 1597 2)(sg[m]^sg[n]^sg[p])   .一定要加括号, ...

  2. 题解——HDU 1848 Fibonacci again and again

    一道组合游戏的题目 SG函数的板子题 预处理出SG函数的值然后回答询问即可 代码 #include <cstdio> #include <algorithm> #include ...

  3. HDU 1848 Fibonacci again and again

    #include<stdio.h> #include<string.h> #include<stdlib.h>const int MAXN = 1005; int ...

  4. SG函数入门HDU 1848

    SG函数 sg[i]为0表示i节点先手必败. 首先定义mex(minimal excludant)运算,这是施加于一个集合的运算,表示最小的不属于这个集合的非负整数.例如mex{0,1,2,4}=3. ...

  5. 斐波那契数列大数的压位c语言,HDU 1568 Fibonacci(大数前4位)

    分析:x=1234567.求其前四位数: log10(x)=log10(1.234567)+6. 所以1.234567=10^(log10(x)-6). 1234 =(int) 10^(log10(x ...

  6. hdu 1848(Fibonacci again and again)(SG博弈)

    Fibonacci again and again Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Jav ...

  7. Fibonacci again and again HDU - 1848(尼姆博弈+SG函数的运用+SG函数详解)

    题意: 给出三堆石子(m,n,p个),两人每次只能取斐波那契数f[i]个,最先取光所有石子者取胜 题目: 任何一个大学生对菲波那契数列(Fibonacci numbers)应该都不会陌生,它是这样定义 ...

  8. 【hdu 1848】Fibonacci again and again

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

  9. HDU 1568 Fibonacci【求斐波那契数的前4位/递推式】

    Fibonacci Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Proble ...

最新文章

  1. python编程爱心-Python使用turtle库画一个爱心构成的爱心
  2. android最新知识点总结,学习android之 知识点总结
  3. 三角形描边css,[CSS] tips带有描边的小箭头
  4. C++笔记-解决VS2015Qt项目MSB3758.MSB4036
  5. linux内核优化脚本,linux内核高级优化脚本
  6. Visual studio 代码管理工具Git
  7. Linux 工程师的 6 类好习惯和 23 个教训
  8. 制作chrome插件
  9. OMEA Pro,刚刚荣获15届Jolt大奖,综合RSS阅读,邮件、任务等管理的IIM(智能信息管理)...
  10. 智慧仓储管理系统实时仓储作业管理
  11. 一个屌丝程序员的青春(二五六)
  12. Github Page 个人主页——自定义域名
  13. 如何给电脑加装硬盘?
  14. Problem D. S03-05 计算球体表面积和体积
  15. 小米商城网页制作大全之搜索引擎(input,Font Awesome)
  16. 拼多多助农 商业之外的底色
  17. To the Greatness of Small
  18. 趣题:奇怪的自然数集划分
  19. 神经注意力蒸馏NAD
  20. mysql 查询一个月的数据

热门文章

  1. Apache Kafka-max.poll.interval.ms参数含义说明
  2. Oracle优化07-分析及动态采样-DBMS_STATS 包
  3. c++ 不允许使用抽象类类型的对象_Java中日期API的使用总结
  4. python 合并区间
  5. 重装云服务器上的系统后的重新部署项目
  6. 时间序列:等分布序列(Equidistributed sequence)
  7. 2020-12-17 Halcon初学者知识【4】区域和分割
  8. datepicker 颜色 android,Android修改DatePicker字體顏色及分割線顏色
  9. 【TypeScript】使用 const 关键字声明只读变量
  10. LeetCode 213 House Robber II Python