您的位置:首页 > 运维架构

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

2014-07-10 23:14 691 查看
一开始被题意坑了= =,题目是说这个数字的最大和最小,不是个位的最大和最小= =

不知道怎么做只能递推了,必胜态就是存在能到达必败态的,必败态就是只能到达必胜态的

CODE:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
#define MAX 1000000
bool b[MAX+2];
int solve(){
for (int i=1;i<=9;i++) b[i]=1;
for (int i=10;i<=MAX;i++){
int ma=0,mi=10,t=i;
while (t){
ma=max(t%10,ma);
mi=t%10==0?mi:min(mi,t%10);
t/=10;
}
b[i]=!(b[i-mi]&b[i-ma]);
}
}
int main(){
int t,n;
scanf("%d",&t);
solve();
while (t--) {
scanf("%d",&n);
if (b
) printf("YES\n");
else printf("NO\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: