Adrien and Austin (南京A题) (博弈)

题目: 2022—暑假1 - Virtual Judge (vjudge.net)

大意: 2个人依次可以拿 1-n个石头,连续性的拿去, 谁不能拿谁输

思路:

  • 利用博弈中的,无论先手整么拿,后手都可以把情况弄相似的思想.
  • 通过先手的预处理, 拿中间一块或者2快,把石头分为数量相同的2堆,后手模仿先手的拿去情况
  • 最后是对一些情况的特判,具体看代码:
#include <bits/stdc++.h>
using namespace std;
#define ri register int 
#define M 200005

int n,m;
int T;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    
    cin>>n>>m;
    
    if(n==0)
    {
        cout<<"Austin";
        return 0;
    }
    if(n<=m) 
    {
        cout<<"Adrien";
        return 0;
    }
    if(n&1)
    {
        cout<<"Adrien";
        return 0;
    }
    else
    {
        if(m==1) cout<<"Austin";
        else cout<<"Adrien";
        return 0;
    }
    
    
} 
View Code

 

posted @ 2022-07-11 10:58  VxiaohuanV  阅读(31)  评论(0编辑  收藏  举报