牛客网 Chess ( 博弈 && 奇异局势 )
分析 :
发现如果一开始就在边界或者位于对角线的位置上肯定是必胜态
从终点逆推,画出胜负表格,填一填,就会发现和奇异局势的前几项一样
然后打个奇异局势的表就能 AC 了
#include<bits/stdc++.h> #define LL long long #define ULL unsigned long long #define pb(i) push_back(i) #define pii pair<int, int> #define pll pair<long long, long long> #define MK(i, j) make_pair(i, j) #define mem(a, b) memset(a, b, sizeof(a)) #define ins(i) insert(i) #define lowbit(i) (i & (-i)) #define lson l, m, rt<<1 #define rson m+1, r, rt<<1|1 #define INF (0x3f3f3f3f) using namespace std; const int maxn = 1e4 + 10; int arr[maxn]; inline void init() { mem(arr, -1); int num = 0; for(int i=0; i+num<maxn; i++){ if(arr[i] == -1){ arr[i] = i+num; arr[i+num] = i; num++; } } } int main(void) { init(); int a, b; while(~scanf("%d %d", &a, &b)){ if(arr[a] == b || arr[b] == a) puts("Lao Wang"); else puts("Xiao Ren"); } return 0; }