[BZOJ] 3404: [Usaco 2009 오픈] Cow Digit Game 또 디지털 게임 (게임 이론)
3213 단어 USACO
몇 번 이나 좌절 을 썼 는데...
누 드 게임 이론 이면 됩 니 다.
#include <cstdio>
#include <cstring>
#include <cmath>
#include <string>
#include <iostream>
#include <algorithm>
#include <queue>
using namespace std;
#define rep(i, n) for(int i=0; i<(n); ++i)
#define for1(i,a,n) for(int i=(a);i<=(n);++i)
#define for2(i,a,n) for(int i=(a);i<(n);++i)
#define for3(i,a,n) for(int i=(a);i>=(n);--i)
#define for4(i,a,n) for(int i=(a);i>(n);--i)
#define CC(i,a) memset(i,a,sizeof(i))
#define read(a) a=getint()
#define print(a) printf("%d", a)
#define dbg(x) cout << #x << " = " << x << endl
#define printarr(a, n, m) rep(aaa, n) { rep(bbb, m) cout << a[aaa][bbb]; cout << endl; }
inline const int getint() { int r=0, k=1; char c=getchar(); for(; c<'0'||c>'9'; c=getchar()) if(c=='-') k=-1; for(; c>='0'&&c<='9'; c=getchar()) r=r*10+c-'0'; return k*r; }
inline const int max(const int &a, const int &b) { return a>b?a:b; }
inline const int min(const int &a, const int &b) { return a<b?a:b; }
const int N=1000005;
bool f[N], vis[N];
bool dfs(int x) {
if(vis[x]) return f[x];
if(x==0) return 0;
vis[x]=1;
int t=x, mx=0, mn=10;
while(t) {
int k=t%10;
t/=10;
if(k) mx=max(mx, k), mn=min(mn, k);
}
if(!dfs(x-mn)) return f[x]=1;
if(!dfs(x-mx)) return f[x]=1;
return f[x]=0;
}
int main() {
int n=getint();
while(n--) {
int ans=dfs(getint());
ans?puts("YES"):puts("NO");
}
return 0;
}
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
첫 번 째 줄 은 정수 G 를 입력 한 다음 G 줄 한 줄 에 Ni 를 입력 합 니 다.
Output
모든 게임 에 대해 베 시가 이 길 수 있다 면 'YES' 한 줄 을 출력 합 니 다. 그렇지 않 으 면 한 줄 의' NO '에 지 는 것 입 니 다.
Sample Input
2
9
10
Sample Output
YES
NO
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.
Source
Silver
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[USACO] 2021 December - BronzeN\le500,000 O(N \log N) O(N^2) O(N2)이라 포기. O(N) O(N) 풀이다. O(N^2) O(N2) 아닌가? O(N) O(N). O(NT) N \le 100,000 O(NT) O(N) O(...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.