BZOJ

洛谷


\(Description\)

有\(n\)堆石子。除了第一堆外,每堆石子个数都不少于前一堆的石子个数。两人轮流操作,每次可以从一堆石子中拿掉任意多的石子,但要保证操作后仍然满足初始时的条件。谁没有石子可拿时输。求先手是否必胜。

\(Solution\)

限制条件就是相邻两个数的差非负。那么记查分数组\(d_i=a_i-a_{i-1}\)。假设拿走第\(i\)堆的\(x\)个石子,影响是\(d_i\)-=\(x\),\(d_{i+1}\)+=\(x\),就相当于从\(d_i\)中拿\(x\)个给\(d_{i+1}\)。

显然原题意和对差分数组做反向的阶梯\(Nim\)是等价的,然后就做完啦。


//1120kb	4ms
#include <cstdio>
#include <cctype>
#include <algorithm>
//#define gc() getchar()
#define MAXIN 300000
#define gc() (SS==TT&&(TT=(SS=IN)+fread(IN,1,MAXIN,stdin),SS==TT)?EOF:*SS++)
typedef long long LL;
const int N=1005; int A[N];
char IN[MAXIN],*SS=IN,*TT=IN; inline int read()
{
int now=0; register char c=gc();
for(;!isdigit(c);c=gc());
for(;isdigit(c);now=now*10+c-'0',c=gc());
return now;
} int main()
{
for(int T=read(); T--;)
{
const int n=read();
for(int i=1; i<=n; ++i) A[i]=read();
int s=0;
for(int i=n; i>=1; i-=2) s^=(A[i]-A[i-1]);
puts(s?"TAK":"NIE");
} return 0;
}

BZOJ.1115.[POI2009]石子游戏Kam(阶梯博弈)的更多相关文章

  1. BZOJ 1115: [POI2009]石子游戏Kam [阶梯NIM]

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

  2. bzoj 1115: [POI2009]石子游戏Kam -- 博弈论

    1115: [POI2009]石子游戏Kam Time Limit: 10 Sec  Memory Limit: 162 MB Description 有N堆石子,除了第一堆外,每堆石子个数都不少于前 ...

  3. BZOJ 1115: [POI2009]石子游戏Kam

    1115: [POI2009]石子游戏Kam Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 883  Solved: 545[Submit][Stat ...

  4. 【BZOJ1115】[POI2009]石子游戏Kam 阶梯博弈

    [BZOJ1115][POI2009]石子游戏Kam Description 有N堆石子,除了第一堆外,每堆石子个数都不少于前一堆的石子个数.两人轮流操作每次操作可以从一堆石子中移走任意多石子,但是要 ...

  5. [BZOJ 1115] [POI2009] 石子游戏Kam 【阶梯博弈】

    题目链接:BZOJ - 1115 题目分析 首先看一下阶梯博弈: 阶梯博弈是指:初始有 n 堆石子,每次可以从任意的第 i 堆拿若干石子放到第 i - 1 堆.最终不能操作的人失败. 解法:将奇数位的 ...

  6. BZOJ 1115 [POI2009]石子游戏Kam(阶梯博弈)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1115 [题目大意] 有N堆石子,除了第一堆外,每堆石子个数都不少于前一堆的石子个数. ...

  7. 【BZOJ】1115: [POI2009]石子游戏Kam

    http://www.lydsy.com/JudgeOnline/problem.php?id=1115 题意:n堆石子,个数是从左到右单增.每一次可以从任意堆取出任意石子,但要保持单增这个性质.问先 ...

  8. [BZOJ1115][POI2009]石子游戏Kam解题报告|阶梯博弈

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

  9. 【bzoj1115】[POI2009]石子游戏Kam(博弈论)

    题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=1115 观察问题,我们能发现前后相邻两堆石子的数量差一定非负,而我们在第i堆石子中移走k ...

随机推荐

  1. Java 获取图片的大小、宽、高

    参考:https://www.cnblogs.com/hongten/archive/2012/11/26/hongten_java_ImageReader_BufferedImage.html im ...

  2. tomcat启动报错 关键字:java.lang.NoClassDefFoundError和 java.lang.ClassNotFoundExceeption

    启动tomcat时报错情况如下图所示:实际上就是依赖的bean出错,百度上很多方法都说是tomcat没有部署正确,项目-->右键----->proterties----->Targe ...

  3. python函数系列之sorted()

    一. 有时候需要对List.Dict进行排序 二.用法:sorted(iterable, cmp=None, key=None, reverse=False) 三.参数说明: iterable:是可迭 ...

  4. LibreOJ β Round #2

    题解: 都是不错的技巧题目 t1暴力就不说了 t2dp是比较显然的 然后发现都是0,1用bitset优化 代码非常短 t3容易发现这个东西在不断合并 于是我们想到启发式合并 存疑:splay启发式合并 ...

  5. BZOJ5084[hashit]

    题解: 后缀自动机 我们可以通过建立trie 把询问变成询问一些点的并 把trie建立成SAM和广义SAM基本相同,就是在父亲和儿子之间连边 然后就变成了询问树链的并 我们可以发现答案=sigma d ...

  6. [转]fiddler 抓包 HTTPS 请求

    教程开始 安装 fiddler 首先准备一台可以上网的 windos 电脑,准备一部智能手机. fiddler 抓包工具:下载地址( 自行百度一搜一大片).安装,打开如果遇到. net framewo ...

  7. 3步实现ssh面密码登录

    1.上次本机的公钥和私钥 [root@vicweb ~]#ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in ...

  8. Codeforces 420D Cup Trick 平衡树

    Cup Trick 平衡树维护一下位置. #include<bits/stdc++.h> #include <bits/extc++.h> #define LL long lo ...

  9. Codeforces 830D Singer House 动态规划

    原文链接https://www.cnblogs.com/zhouzhendong/p/CF830D.html 题解 考虑用 $dp[i][j]$ 表示深度为 $i$ 的树里,有 $j$ 条路径的方案数 ...

  10. Java中String直接赋字符串和new String的区别(面试常考)

    摘取自:https://www.cnblogs.com/guozhenqiang/p/5633269.html 解析Java中的String对象的数据类型 1. String是一个对象.  因为对象的 ...