bzoj 3404: [Usaco2009 Open]Cow Digit Game又见数字游戏(SG函数)

标签: bzoj
574人阅读 评论(0) 收藏 举报
分类:

3404: [Usaco2009 Open]Cow Digit Game又见数字游戏

Time Limit: 3 Sec  Memory Limit: 128 MB
Submit: 181  Solved: 124
[Submit][Status][Discuss]

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

2
9
10

Sample Output

YES
NO


丢史蒂芬妮一模一样

记忆化搜索或SG打表

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int dp[1000005];
int Sech(int x)
{
	int temp, mn, mx;
	if(dp[x]!=-1)
		return dp[x];
	temp = x;
	mn = 10, mx = 0;
	while(temp)
	{
		if(temp%10!=0)
		{
			mn = min(mn, temp%10);
			mx = max(mx, temp%10);
		}
		temp /= 10;
	}
	if(Sech(x-mn)==0 || Sech(x-mx)==0)
		dp[x] = 1;
	else
		dp[x] = 0;
	return dp[x];
}
int main(void)
{
	int T, n;
	memset(dp, -1, sizeof(dp));
	dp[0] = 0;
	scanf("%d", &T);
	while(T--)
	{
		scanf("%d", &n);
		if(Sech(n))
			printf("YES\n");
		else
			printf("NO\n");
	}
	return 0;
}


查看评论

101个Java比.NET好的理由(1~10) (译者:陈佳新)

101个Java比.NET好的理由(1~10) (译者:陈佳新)   101 Reasons Java is Better than .NET (1~10)   作者:John Lambert   译...
  • bruce
  • bruce
  • 2003-02-09 11:01:00
  • 1882

USACO 2009 Open Silver 3.Cow Digit Game简单博弈论

Description Bessie is playing a number game against Farmer John, and she wants you to help her achi...
  • qq_35891865
  • qq_35891865
  • 2016-08-28 16:01:36
  • 408

3404: [Usaco2009 Open]Cow Digit Game又见数字游戏 (博弈论)

#include #include #include #include using namespace std; int read() { int x=0,f=1; char ch=g...
  • ndsffx501ccy
  • ndsffx501ccy
  • 2014-11-02 11:05:04
  • 121

[BZOJ3404][Usaco2009 Open]Cow Digit Game又见数字游戏

大水题…
  • Zvezda_
  • Zvezda_
  • 2016-03-18 00:20:16
  • 362

bzoj3404 [Usaco2009 Open]Cow Digit Game又见数字游戏

Description     贝茜和约翰在玩一个数字游戏.贝茜需要你帮助她.     游戏一共进行了G(1≤G≤100)场.第i场游戏开始于一个正整数Ni(l≤Ni≤1,000,000).游...
  • zhb1997
  • zhb1997
  • 2014-09-26 22:31:09
  • 1117

[Usaco2006 Oct]Another Cow Number Game 奶牛的数字游戏 记忆化搜索

奶牛们又在玩一种无聊的数字游戏。输得很郁闷的贝茜想请你写个程序来帮她在开局时预测结果。在游戏的开始,每头牛都会得到一个数N(1...
  • sdj222555
  • sdj222555
  • 2012-11-29 23:23:31
  • 1981

bzoj3403[Usaco2009 Open]Cow Line 直线上的牛

Description 题目描述     约翰的N只奶牛(编为1到N号)正在直线上排队.直线上开始的时候一只牛也没有.接下来发生了S(1≤S≤100000)次事件,一次事件可能是以下四种情况之...
  • zhb1997
  • zhb1997
  • 2014-06-14 21:30:18
  • 601

bzoj1666[Usaco2006 Oct]Another Cow Number Game 奶牛的数字游戏

Description 奶牛们又在玩一种无聊的数字游戏。输得很郁闷的贝茜想请你写个程序来帮她在开局时预测结果。在游戏的开始,每头牛都会得到一个数N(1...
  • zhb1997
  • zhb1997
  • 2014-06-02 23:28:06
  • 651

BZOJ 1666: [Usaco2006 Oct]Another Cow Number Game 奶牛的数字游戏

。。按照题目做就好了。。 我原以为还有什么神奇的算法 结果我想多了 7行代码 #include using namespace std; int main(){ int n,ans;cin>...
  • bababaab
  • bababaab
  • 2016-02-04 11:47:19
  • 313

kyeremal-poj2311-Cutting Game-sg函数

poj2311-Cutting Game 题意:给定一张n*m的矩形纸片,定义一个决策为:从所有的纸片中任选一张(初始时仅有1张),沿平行于矩形边剪切,将原矩形分割为2个较小的矩形,双方轮流决策,先...
  • kyeremal
  • kyeremal
  • 2015-05-11 23:34:56
  • 596
    个人资料
    持之以恒
    等级:
    访问量: 19万+
    积分: 1万+
    排名: 2101
    最新评论