zoukankan      html  css  js  c++  java
  • P4279 【[SHOI2008]小约翰的游戏】

    我怎么什么都不会啊(QAQ)博弈论怎么和期望一样玄学啊(QAQ)

    我们分几种情况讨论:

    (Case1):只有一堆且为1,那么后手胜利

    (Case2):每一堆都是1,那么只需要判断奇偶性,奇数则先手败,偶数则后手败

    (Case3):只有一堆不是1,其余堆都是1,那么可以根据就行,先手可以选择是拿完或是那得只剩一个

    (Case4):一般情况,思考怎么转化成(Case 1-3)

    现在题意是说:给定K堆,先手想要自己去到最后一堆他就会胜利((Case3)),这不就变成(nim)游戏了吗?

    于是只需要把每一堆的权值异或起来即可

    (Code:)

    #include<bits/stdc++.h>
    using namespace std;
    int read() {
        int x = 0, f = 1; char c = getchar();
        while(c < '0' || c > '9') { if(c == '-') f = -1; c = getchar();}
        while(c >= '0' && c <= '9') x = x * 10 + c - 48, c = getchar();
        return x * f;
    }
    int main() {
        int T = read();
        while(T --) {
            int n = read(), x, ans = 0, sum = 0;
            for(int i = 1; i <= n; ++ i) x = read(), ans ^= x, sum += x;
            if(sum == n) puts(n & 1 ? "Brother" : "John");
            else puts(ans ? "John" : "Brother");
        }
    	return 0;
    }
    
    
  • 相关阅读:
    Spring Cloud Hystrix(熔断器)介绍及使用
    Fign入门学习
    Ribbon入门学习
    浅谈JSON5
    JSONObject 与 JSON 互转
    Windows下安装使用jmeter
    MongoDB 数据库高级进阶
    Mysq-l数据库下载以及安装(至安装成功cmd可访问)
    Mysql-数据库下载
    端口占用
  • 原文地址:https://www.cnblogs.com/bcoier/p/11774635.html
Copyright © 2011-2022 走看看