bzoj3404 [Usaco2009 Open]Cow Digit Game又见数字游戏
2014-09-26 22:31
489 查看
Description
贝茜和约翰在玩一个数字游戏.贝茜需要你帮助她.游戏一共进行了G(1≤G≤100)场.第i场游戏开始于一个正整数Ni(l≤Ni≤1,000,000).游
戏规则是这样的:双方轮流操作,将当前的数字减去一个数,这个数可以是当前数字的最大数码,也可以是最小的非0数码.比如当前的数是3014,操作者可以减去1变成3013,也可以减去4变成3010.若干次操作之后,这个数字会变成0.这时候不能再操作的一方为输家. 贝茜总是先开始操作.如果贝茜和约翰都足够聪明,执行最好的策略.请你计算最后的赢家.
比如,一场游戏开始于13.贝茜将13减去3变成10.约翰只能将10减去1变成9.贝茜再将9减去9变成0.最后贝茜赢.
Input
第1行输入一个整数G,之后G行一行输入一个Ni.Output
对于每一场游戏,若贝茜能赢,则输出一行“YES”,否则输幽一行“NO”Sample Input
29
10
Sample Output
YESNO
HINT
For the first game, Bessie simply takes the number 9 and wins. For the second game, Bessie must take 1 (since she cannot take 0), and then FJ can win by taking 9.
模拟
先算出一个数字能减的数字
然后从以前的状态转移而来
在自己先手的时候如果能把数字改成先手必输的状态,那么这个状态先手必胜
#include<cstdio> #include<iostream> #include<cstring> #include<cstdlib> #include<cmath> #include<algorithm> #include<ctime> #include<set> #define LL long long #define MX 1000010 using namespace std; inline LL read() { int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f; } bool win[1000010]; int T,n,mx,mn; int main() { scanf("%d",&T); for (int i=1;i<=9;i++)win[i]=1; for (int i=10;i<=MX;i++) { int s=i,t; mx=-1;mn=10; while (s) { t=s%10; if (t>mx&&t)mx=t; if (t<mn&&t)mn=t; s/=10; } if (mx!=-1)win[i]|=(!win[i-mx]); if (mn!=10)win[i]|=(!win[i-mn]); } while (T--) { int x=read(); if (win[x])printf("YES\n"); else printf("NO\n"); } }
相关文章推荐
- bzoj 3404: [Usaco2009 Open]Cow Digit Game又见数字游戏(SG函数)
- 【博弈论】【SG函数】bzoj3404 [Usaco2009 Open]Cow Digit Game又见数字游戏
- BZOJ 3404: [Usaco2009 Open]Cow Digit Game又见数字游戏(博弈论)
- 【BZOJ】3404: [Usaco2009 Open]Cow Digit Game又见数字游戏(博弈论)
- 【BZOJ】【3404】【USACO2009 Open】Cow Digit Game又见数字游戏
- [BZOJ3404][Usaco2009 Open]Cow Digit Game又见数字游戏
- [bzoj3404] [Usaco2009 Open]Cow Digit Game又见数字游戏
- bzoj3404 [Usaco2009 Open]Cow Digit Game又见数字游戏
- 3404: [Usaco2009 Open]Cow Digit Game又见数字游戏 (博弈论)
- 3404: [Usaco2009 Open]Cow Digit Game又见数字游戏
- BZOJ3404: [Usaco2009 Open]Cow Digit Game又见数字游戏
- bzoj3404 [Usaco2009 Open]Cow Digit Game又见数字游戏
- bzoj:1666: [Usaco2006 Oct]Another Cow Number Game 奶牛的数字游戏
- 【bzoj1666】 [Usaco2006 Oct]Another Cow Number Game 奶牛的数字游戏
- bzoj 1666: [Usaco2006 Oct]Another Cow Number Game 奶牛的数字游戏
- 【BZOJ】1666 [Usaco2006 Oct]Another Cow Number Game 奶牛的数字游戏
- BZOJ 1666: [Usaco2006 Oct]Another Cow Number Game 奶牛的数字游戏
- BZOJ_P1666 [Usaco2006 Oct]Another Cow Number Game 奶牛的数字游戏(hhhhhh)
- bzoj1666[Usaco2006 Oct]Another Cow Number Game 奶牛的数字游戏
- bzoj1666[Usaco2006 Oct]Another Cow Number Game 奶牛的数字游戏