Gym 100814L Candy Jars 博弈论

来源:互联网 发布:it培训 先入职再交钱 编辑:程序博客网 时间:2024/06/05 00:42

链接

Gym 100814L Candy Jars

题意

一堆罐子里面有一些糖果, A 和 B 轮流操作, 每次操作可以任取一个罐子, 扔掉其余罐子的所有糖果, 然后将这个罐子的重新分配到所有罐子, 每个罐子至少一个. 都采用最有策略, 问谁能赢.

思路

容易知道如果一个罐子里糖果数是 1 ~ n-1, 则是 必败的局面, 如果是 n ~ n(n-1), 则是必胜的局面, 对于每一个罐子的糖果数而言,再加上一个必胜的数量不会影响他的局面, 所以每一个罐子再加上 n(n-1) 是不会影响的, 这样的话将糖果数对 n(n-1) 取余就可以了

代码

#include <bits/stdc++.h>#define LL long long#define eps 1e-8#define INF 0x3f3f3f3f#define MAXN 105#define MAXM 105using namespace std;int main(){#ifndef ONLINE_JUDGE    freopen("in.txt", "r", stdin);    //freopen("out.txt", "w", stdout);#endif    int T;    scanf("%d", &T);    int n,  x;    while(T--){        scanf("%d", &n);        bool flag = false;        for(int i = 1; i <= n; ++i){            scanf("%d", &x);            if(flag)continue;            int temp = x % (n * (n - 1));            if(temp >= 1 && temp < n) continue;            flag = true;        }        if(flag){            printf("Alice\n");        }else{            printf("Bob\n");        }    }}


查看原文:http://www.macinchang.com/2016/01/06/542/

0 0
原创粉丝点击