hdu_1848_Fibonacci again and again(博弈sg函数)
2016-06-02 20:55
519 查看
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1848
题意:给你3堆石子,每次只能取fibonacci数的石子,问先手是否能赢
题解:SG函数模版题
#include<cstdio> #define F(i,a,b) for(int i=a;i<=b;i++) /* 计算从0-N范围内的SG值。 s(存储可以走的步数,s[0]表示可以有多少种走法) s[]需要从小到大排序 1.可选步数为1~m的连续整数,直接取模即可,SG(x)=x%(m+1); 2.可选步数为任意步,SG(x) = x; 3.可选步数为一系列不连续的数,用GetSG()计算 */ const int N=1001; int sg ;bool hash ; void get_sg(int *s,int N){ F(i,0,N)sg[i]=0; F(i,1,N){ F(j,0,N)hash[j]=0; for(int j=1;s[j]<=i&&j<=s[0];j++)hash[sg[i-s[j]]]=1; F(j,0,N)if(!hash[j]){sg[i]=j;break;} } } int f[20],n,m,p; int main(){ f[1]=1,f[2]=2,f[0]=16; F(i,3,16)f[i]=f[i-1]+f[i-2]; get_sg(f,1000); while(~scanf("%d%d%d",&m,&n,&p),m+n+p){ if(sg[m]^sg ^sgView Code [p])puts("Fibo"); else puts("Nacci"); } return 0; }
相关文章推荐
- Codeforces Round #222 (Div. 1) C. Captains Mode 对弈+dp
- mdadm软RAID的删除方法和注意事项
- mount: unknown filesystem type 'ddf_raid_member'
- AIDL注意细节 简单Demo
- AIDL实现跨进程通信
- 关于main函数的(int argc,char *argv[])
- error: command 'gcc' failed with exit status 1
- [置顶] GENYMOTION问题之an error occurred while deploying a file install_failed_no_machine_abis
- Opencv:haartraining生成.xml文件过程
- IBM P750 AIX机器根目录空间满问题解决办法
- 解决httpd: Could not reliably determine the server's fully qualified domain name
- 1086. Tree Traversals Again (25)
- 线程间协作的两种方式:wait、notify、notifyAll和Condition
- 可视化,actionscript air
- 敌人AI:攻击
- leetcode 172. Factorial Trailing Zeroes
- AIX中文支持
- AIDL中in,out和inout的区别
- git clone: error: RPC failed; result=56, HTTP code = 200
- linux 进程调用 execl() fork() waitpid()