HDU1536->SG函数
来源:互联网 发布:上海人工智能公司排名 编辑:程序博客网 时间:2024/05/24 00:53
HDU1536->SG函数
题意:
给出n堆石子,每次只能按照规定的取石子个数取,输出先手的胜负情况。
题解:
递归求出sg函数就能解决问题。
代码:
#include <stdio.h>#include <iostream>#include <string.h>#include <algorithm>using namespace std ;int s[110] , sg[10010] , n;//S数组要按从小到大排序 SG函数要初始化为-1 对于每个集合只需初始化1遍//n是集合s的大小 S[i]是定义的特殊取法规则的数组int SG_dfs(int x){ int i; if(sg[x]!=-1) return sg[x]; bool vis[110]; memset(vis,0,sizeof(vis)); for(i=0;i<n;i++){ if(x>=s[i]) { SG_dfs(x-s[i]); vis[sg[x-s[i]]]=1; } } int e; for(i=0;;i++) if(!vis[i]) { e=i; break; } return sg[x]=e;}int main(){ int m , k , a , ans; while(scanf("%d" , &n)!= EOF , n) { for(int i = 0 ; i < n ; i ++) scanf("%d" , &s[i]) ; memset(sg , -1 , sizeof(sg)) ; sort(s , s+n) ; scanf("%d" , &m) ; while(m --) { scanf("%d" , &k) ; ans = 0 ; while(k --) { scanf("%d" , &a) ; ans ^= SG_dfs(a) ; } if(ans == 0) printf("L") ; else printf("W") ; } printf("\n") ; } return 0 ;}
0 0
- HDU1536->SG函数
- HDU1536 SG函数
- 【HDU1536】S-Nim (博弈,SG函数)
- hdu1536 & 1944 S-NIM 博弈 SG函数
- hdu1536 - S-Nim (博弈 SG函数)
- S-Nim(hdu1536+SG函数)
- HDU1536 SG函数的简单应用
- HDU1536&&HDU1944 S-Nim SG函数
- HDU1536 或者POJ2960 S-Nim 传说中的SG函数
- hdu1536 S-Nim (利用sg函数模板打表)
- hdu1536(求sg)
- hdu1536-SG值
- hdu1536博弈sg
- ACM-SG函数之S-Nim——hdu1536 hdu1944 poj2960
- 【HDU1536 S-Nim】固定取法下的nim博弈-SG函数
- HDU1536,SG函数(①打表,②回溯),简单应用示例2
- HDU1536 SG博弈+尼姆博弈
- hdu1536
- 求本月的第一个周一
- Making a String
- Bmob 后端云服务平台
- insert into 语句的三种写法
- java短信接口
- HDU1536->SG函数
- 工作流Activiti的学习总结(六)Antiviti的安装详细过程
- 第三方控件PullToRefresh使用过程
- [SCOI2005]超级格雷码
- C#学习日记-接口于类
- [CodeChef]GERALD07/[JZOJ4739]Ztxz16学图论
- 在线将pdf转图片格式怎么转
- [SCOI2005]超级格雷码
- 九度题目1154:Jungle Roads