zoukankan      html  css  js  c++  java
  • HDU 3389

    题意略。

    思路:这个题目是一个阶梯博弈。其实像这种阶梯博弈,威佐夫博弈,巴什博弈,nim博弈,斐波那契博弈,都是要构造一个模型。

    对于特定的模型,都有一个固定的策略。

    对于这个题目,我们可以发现1,2,7,8,13,14.....是一个体系。3,6,9,12,15.....是一个体系。4,5,10,11,16,17.....是一个体系。

    也就是说这一个大游戏可以分成3个小游戏,最终我们只需要把这3个游戏的sg值做异或和就可以了。

    其实这3个小游戏是一样的,我们挑任意一个小游戏来说:

    我们将这个小游戏的盒子下标重新编号,编成1,2,3,4,5.....。其实我们可以发现,如果偶数位上数字的xor和为0,那么先手必败。

     

    详见代码:

    #include<bits/stdc++.h>
    using namespace std;
    
    int T,n,temp;
    
    int main(){
        scanf("%d",&T);
        int cas = 1;
        while(T--){
            scanf("%d",&n);
            int x1 = 0,x2 = 0,x3 = 0;
            for(int i = 1;i <= n;++i){
                scanf("%d",&temp);
                if(i % 6 == 2) x1 ^= temp;
                else if(i % 6 == 5) x2 ^= temp;
                else if(i % 6 == 0) x3 ^= temp;
            }
            printf("Case %d: %s
    ",cas++,(x1 ^ x2 ^ x3) ? "Alice" : "Bob");
        }
        return 0;
    } 
  • 相关阅读:
    【Rust】变量绑定
    【Rust】枚举的使用
    1月25日 学习记录
    1月19日 学习记录
    1月22日 学习记录
    1月21日 学习记录
    1月29日 体温APP开发记录
    今日进度
    今日进度
    今日进度
  • 原文地址:https://www.cnblogs.com/tiberius/p/9399879.html
Copyright © 2011-2022 走看看