HDU1846 Brave Game 题解

题面

 

本题是一道有向图博弈问题:

该题便是著名的巴什博弈;

我们可以发现,当n=0的时候后手必胜(设其为P态),n=1~m这几种状态由于先手可以一次全部取完导致先手必胜(设其为N态)。

接着当n=m+1时,因为先手无论取走几个都会使后手一次全部取走导致后手必胜;

接着当n=m+2~2*m时,因为先手可以一次就将石子取剩m+1个,导致无论后手取几个,最后都会使先手一次全部取完,导致先手必胜。

......

综上所述,不难发现一个人想要获胜就要把对方逼到当对方选择时棋子剩m+1的倍数个,由于先手的先发性,只要n!=(m+1)的倍数,先手就一定可以一次就把石子取到剩(m+1)的倍数个,不断逼使后手一直走必败路线。

所以当n%(m+1)=0时,后手必胜,否则先手必胜。

 

#include <bits/stdc++.h>
using namespace std;
int main ()
{
    int t;
    cin>>t;
    while(t--){
        int n,k;
        scanf("%d%d",&n,&k);
        if(n%(k+1)==0){
            printf("second\n");
        }
        else{
            printf("first\n");
        }
    }
}

 

posted @ 2019-08-09 14:10  神之右大臣  阅读(187)  评论(0编辑  收藏  举报