A - Candy Game ZOJ - 3994(水,博弈)

题意:
有n堆狗,n堆猫。A取一堆狗并选一些狗(至少一只),B取一堆猫并选一些猫(至少一只)。选走最后一个动物的人赢了。求先手是否必胜。

思路:
A选择次数范围为 [ n , ∑ s u m ( a [ i ] ) ] [n,∑sum(a[i])] [n,sum(a[i])]
B选择次数范围为 [ n , ∑ s u m ( b [ i ] ) ] [n,∑sum(b[i])] [n,sum(b[i])]
每次只取一个最优,
易得谁的选择次数上限更大,谁就能赢。如果选择次数上限一样,后手赢。

#include <cstdio>

using namespace std;

int main(){
    
    
    int T;scanf("%d",&T);
    while(T--){
    
    
        int n;scanf("%d",&n);
        int a = 0,b = 0;
        for(int i = 1;i <= n;i++){
    
    
            int x;scanf("%d",&x);
            a += x;
        }
        for(int i = 1;i <= n;i++){
    
    
            int x;scanf("%d",&x);
            b += x;
        }
        if(a > b) printf("BaoBao\n");
        else printf("DreamGrid\n");
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/tomjobs/article/details/109072590