Description

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

Input

第一行u表示数据组数。对于每组数据,第一行N表示石子堆数,第二行N个数ai表示第i堆石子的个数(a1<=a2<=……<=an)。 1<=u<=10 1<=n<=1000 0<=ai<=10000

Output

u行,若先手必胜输出TAK,否则输出NIE。

Sample Input

2
2
2 2
3
1 2 4

Sample Output

NIE
TAK
这个可以把它转化成有n堆石子,第i堆的数目是a[i]-a[i-1];
然后会发现第i堆减去k,第i+1堆加k这样的话就可以对奇数堆做NIM游戏。。

 1 #include<iostream>
 2 #include<cstdlib>
 3 #include<cmath>
 4 #include<cstring>
 5 #include<cstdio>
 6 #include<algorithm>
 7 #include<string>
 8 #include<map>
 9 #include<queue>
10 #include<vector>
11 #include<set>
12 #define inf 1000000000
13 #define maxn 10000+5
14 #define maxm 10000+5
15 #define eps 1e-10
16 #define ll long long
17 #define for0(i,n) for(int i=0;i<=(n);i++)
18 #define for1(i,n) for(int i=1;i<=(n);i++)
19 #define for2(i,x,y) for(int i=(x);i<=(y);i++)
20 #define for3(i,x,y) for(int i=(x);i>=(y);i--)
21 #define for4(i,x) for(int i=head[x],y=e[i].go;i;i=e[i].next,y=e[i].go)
22 using namespace std;
23 int read(){
24     int x=0,f=1;char ch=getchar();
25     while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
26     while(ch>='0'&&ch<='9'){x=10*x+ch-'0';ch=getchar();}
27     return x*f;
28 }
29 int a[maxn],b[maxn];
30 int main(){
31     //freopen("input.txt","r",stdin);
32     //freopen("output.txt","w",stdout);
33     int m=read();
34     for1(i,m){
35         int n=read();
36         for1(j,n){a[j]=read();b[j]=a[j]-a[j-1];}
37         int tmp=0;
38         for(int j=n;j>0;j-=2)
39             tmp^=b[j];
40         if(tmp)printf("TAK\n");
41         else printf("NIE\n");
42     }
43     return 0;
44 }

View Code

转载于:https://www.cnblogs.com/htwx/articles/5546029.html

1115: [POI2009]石子游戏Kam相关推荐

  1. bzoj 1115: [POI2009]石子游戏Kam(博弈)

    1115: [POI2009]石子游戏Kam Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1132  Solved: 692 [Submit][S ...

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

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

  3. bzoj1115: [POI2009]石子游戏Kam

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

  4. [POI2009]石子游戏Kam

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

  5. 【bzoj1115】 [POI2009]石子游戏Kam

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

  6. BZOJ1115:[POI2009]石子游戏Kam(博弈论)

    挺水的 听说是阶梯nim和,就去看了一下,然后就会了= = 观察题目,发现拿第i堆棋子k个造成的影响就是第i+1堆棋子能多拿k个 可以把模型转化为,有n堆石子,每次从某一堆拿一个石子,放在下一堆中,不 ...

  7. 【博弈论】bzoj1115 [POI2009]石子游戏Kam

    差分后与阶梯博弈很类似. #include<cstdio> using namespace std; int n,T,a[1001],ans; int main() {scanf(&quo ...

  8. bzoj1115:[POI2009]石子游戏Kam

    传送门 阶梯nim模型 代码: #include<cstdio> #include<iostream> #include<algorithm> using name ...

  9. [BZOJ]1115 石子游戏Kam

    1115: [POI2009]石子游戏Kam Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1061  Solved: 651 [Submit][S ...

最新文章

  1. Jenkins部署Windows UI自动化的调度权限问题
  2. tomcat主目录(ROOT.xml)和虚拟目录
  3. 图解Myeclipse 导入Java Web项目报错的解决办法听语音
  4. 经常收到银行白金信用卡邀请短信,真能办下来吗?
  5. CSS自定义消息提示
  6. retrofit2.6.0_RxAndroid和Retrofit 2.0
  7. eclipse git插件简单使用
  8. Notepad++的SQL格式化插件
  9. 小米5刷android p6,小米5刷recovery教程 小米5第三方recovery下载
  10. Mac mini M1使用简单体验(编程、游戏、深度学习)
  11. 自定义审批流程表设计
  12. SOLIDWORKS 2018官方正版功能介绍
  13. 鸿蒙归蝶的反弹,诛仙前传鸿蒙副本任务详细攻略解读
  14. [记录]手机数据恢复
  15. 史上最简萤石云视频显示开发教程(pc端)
  16. 机器人学:操作臂运动学(Manipulator Forward Kinematics)
  17. 牛客网暑期ACM多校训练营(第四场)C(Chiaki Sequence Reloaded)
  18. 成信大808计算机基础历年真题及答案
  19. mysql master_log_file_change master 未指定master_log_file
  20. If you don't build your dreamer, someone will hire you to build theirs!

热门文章

  1. ReloadFunction
  2. 我们为什么要学习JAVA?
  3. 远山的呼唤 桥的在建
  4. 开源项目piwik搭建
  5. 【前端学习】unicode码点问题 es6,为什么\u{20BB7}和\uD842\uDFB7相同
  6. 微信小程序 实时音视频开发
  7. 2021年复杂美入选浙江省科技型中小企业
  8. 史上最强的绕口令.没人能读出.要不你试试?
  9. 苹果相关链接和联系方式
  10. 固件firmware和驱动driver