zoukankan      html  css  js  c++  java
  • BZOJ 1115: [POI2009]石子游戏Kam

    Description

    有N堆石子,除了第一堆外,每堆石子个数都不少于前一堆的石子个数。两人轮流操作每次操作可以从一堆石子中移走任意多石子,但是要保证操作后仍然满足初始时的条件谁没有石子可移时输掉游戏。问先手是否必胜。(nleqslant 1000,a_ileqslant 10^5)

    Solution

    阶梯博弈。
    将序列差分后,从一堆石子减去一个数相当于差分数列中后面的数加上这个数,然后这就是倒着的阶梯博弈了。

    Code

    /**************************************************************
        Problem: 1115
        User: BeiYu
        Language: C++
        Result: Accepted
        Time:4 ms
        Memory:1276 kb
    ****************************************************************/
     
    #include<cstdio>
    #include<iostream>
    using namespace std;
    inline int in(int x=0,char ch=getchar()){while(ch>'9'||ch<'0') ch=getchar();
        while(ch>='0'&&ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar();return x;}
    int t,n,ans,i;int a[1005];
    int main(){
        t=in();while(t--){
            for(n=in(),ans=0,i=1;i<=n;i++) a[i]=in();
            for(int i=n;i>=1;i-=2) ans^=(a[i]-a[i-1]);
            if(ans) puts("TAK");else puts("NIE");
        }return 0;
    }
    

      

  • 相关阅读:
    CentOS7安装MySQL5.7
    .gdbinit文件配置
    Linux 动态库加载
    GDB常用调试命令(二)
    git删除缓存区中文件
    git添加空文件夹
    Linux 打开core dump功能
    C++ 预处理器
    C++ 模板
    C++ 命名空间
  • 原文地址:https://www.cnblogs.com/beiyuoi/p/6549325.html
Copyright © 2011-2022 走看看