HDU 1848 Fibonacci again and again(博弈)
题目链接: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(博弈)相关推荐
- (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]) .一定要加括号, ...
- 题解——HDU 1848 Fibonacci again and again
一道组合游戏的题目 SG函数的板子题 预处理出SG函数的值然后回答询问即可 代码 #include <cstdio> #include <algorithm> #include ...
- HDU 1848 Fibonacci again and again
#include<stdio.h> #include<string.h> #include<stdlib.h>const int MAXN = 1005; int ...
- SG函数入门HDU 1848
SG函数 sg[i]为0表示i节点先手必败. 首先定义mex(minimal excludant)运算,这是施加于一个集合的运算,表示最小的不属于这个集合的非负整数.例如mex{0,1,2,4}=3. ...
- 斐波那契数列大数的压位c语言,HDU 1568 Fibonacci(大数前4位)
分析:x=1234567.求其前四位数: log10(x)=log10(1.234567)+6. 所以1.234567=10^(log10(x)-6). 1234 =(int) 10^(log10(x ...
- hdu 1848(Fibonacci again and again)(SG博弈)
Fibonacci again and again Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Jav ...
- Fibonacci again and again HDU - 1848(尼姆博弈+SG函数的运用+SG函数详解)
题意: 给出三堆石子(m,n,p个),两人每次只能取斐波那契数f[i]个,最先取光所有石子者取胜 题目: 任何一个大学生对菲波那契数列(Fibonacci numbers)应该都不会陌生,它是这样定义 ...
- 【hdu 1848】Fibonacci again and again
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...
- HDU 1568 Fibonacci【求斐波那契数的前4位/递推式】
Fibonacci Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Proble ...
最新文章
- python编程爱心-Python使用turtle库画一个爱心构成的爱心
- android最新知识点总结,学习android之 知识点总结
- 三角形描边css,[CSS] tips带有描边的小箭头
- C++笔记-解决VS2015Qt项目MSB3758.MSB4036
- linux内核优化脚本,linux内核高级优化脚本
- Visual studio 代码管理工具Git
- Linux 工程师的 6 类好习惯和 23 个教训
- 制作chrome插件
- OMEA Pro,刚刚荣获15届Jolt大奖,综合RSS阅读,邮件、任务等管理的IIM(智能信息管理)...
- 智慧仓储管理系统实时仓储作业管理
- 一个屌丝程序员的青春(二五六)
- Github Page 个人主页——自定义域名
- 如何给电脑加装硬盘?
- Problem D. S03-05 计算球体表面积和体积
- 小米商城网页制作大全之搜索引擎(input,Font Awesome)
- 拼多多助农 商业之外的底色
- To the Greatness of Small
- 趣题:奇怪的自然数集划分
- 神经注意力蒸馏NAD
- mysql 查询一个月的数据
热门文章
- Apache Kafka-max.poll.interval.ms参数含义说明
- Oracle优化07-分析及动态采样-DBMS_STATS 包
- c++ 不允许使用抽象类类型的对象_Java中日期API的使用总结
- python 合并区间
- 重装云服务器上的系统后的重新部署项目
- 时间序列:等分布序列(Equidistributed sequence)
- 2020-12-17 Halcon初学者知识【4】区域和分割
- datepicker 颜色 android,Android修改DatePicker字體顏色及分割線顏色
- 【TypeScript】使用 const 关键字声明只读变量
- LeetCode 213 House Robber II Python