Matrix Game

nim

我们可以很清楚地看出来,这应该是一个nim游戏。
因为,我们可以把它分为每一行地小博弈所组成的一个矩形的大博弈。
那么我们的关注点就要放在,每一行上的小博弈上了。
乍一看,这个小博弈很复杂。还牵扯到每一列。
但是,我们究其本质还会发现,取哪一列其实并没有什么关系。
是否?关键是我取了多少石子,还剩多少石。
简而言之,我们根本不需要更关心每一列。直接统计每一行的石子数,做nim博弈就好了

代码如下:

#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
typedef long long ll;
int main() {
    int T;scanf("%d", &T);
    for (int tcase = 1;tcase <= T;++tcase) {
        int m, n;
        scanf("%d %d", &m, &n);
        ll ans = 0;
        for (ll i = 1, res = 0;i <= m;++i, res = 0) {
            for (ll j = 1, tmp;j <= n;++j) {
                scanf("%lld", &tmp);
                res += tmp;
            }ans ^= res;
        }ans > 0 ? printf("Case %d: Alice\n", tcase) : printf("Case %d: Bob\n", tcase);
    }
}
kuangbin刷题题单详解(博弈论) 文章被收录于专栏

题单:https://vjudge.net/article/371

全部评论

相关推荐

合适才能收到offe...:项目岗是什么岗?我看你有段好像跟策划运营相关,如果找运营的话第三段经历写详细点儿。 个人建议是把自我评价删了换成专业技能放在工作经验上或者下面。学生会那个也可以删,把第一个包装成店铺运营,写4-6给点。第三个也是写4-6个点。注意工作内容➕部分数据。 投递的时候BOS招呼用语改一下,换成我有xx工作经验,熟练掌握xx技能样式,也可以简历截图然后直接发送。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务