题目大意:

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

要保证序列不下降,这个条件似乎有点困难,于是我们转化一下,令数列\(c\)为原序列的差分序列,这样每次操作就等价于把\(c\)中的\(c[i],c[i+1]\)变成\(c[i]-x,c[i]+x(x>0)\)了。然后你需要知道一个叫阶梯Nim游戏的东西。
阶梯Nim游戏大概就是有\(1\)到\(n\)这\(n\)个高度递增的台阶,每个台阶上有一些石子,\(0\)为地面,每次操作可以把一些石子从\(i(i\geqslant1)\)移动到\(i-1\)阶上,不能操作者输(此时所有石子都跑到地面上去了)。
怎么判断先手是否必胜呢?有如下结论:阶梯Nim游戏等价于所有奇数台阶上石子的Nim游戏。
可以这样理解:因为我们先手,那就按照Nim游戏的必胜策略在奇数台阶上先操作,然后轮到对手操作了,有下面这两种情况:
1.他移动偶数台阶上的石子,我们就把他放在奇数台阶上的那一部分石子往下移,这样所有的奇数台阶都没有变
2.他移动奇数台阶上的石子,我们就继续在奇数台阶上按照必胜策略操作
经过上面的操作后,剩下的石子一定都在偶数台阶上。假设此时轮到对手操作(我们操作同理),无论他怎么操作,我们都可以把他操作的那一部分石子向下继续移。最后一步(此时能移动的石子都在\(1\)号台阶上)一定是我们操作,必胜。也就是说最后剩下的那些在偶数台阶上的石子可以忽略不计。
综上所述,阶梯Nim游戏就等价于在奇数台阶上操作的Nim游戏。
------------------------------------------------------------------------------------
看原题,不就是一个倒过来的阶梯Nim游戏吗?倒着扫一遍就好了!
代码:

#include <bits/stdc++.h>using namespace std;#define N 1000int T, n, a[N+5], c[N+5];int main() {scanf("%d", &T);while(T--) {scanf("%d", &n);for(int i = 1; i <= n; ++i) scanf("%d", &a[i]), c[i] = a[i]-a[i-1];int ans = 0;for(int i = n; i >= 1; i -= 2) ans ^= c[i];if(ans) printf("TAK\n");else printf("NIE\n");}return 0;
}

转载于:https://www.cnblogs.com/dummyummy/p/10137752.html

洛谷P3480 KAM-Pebbles相关推荐

  1. 【洛谷P3480】KAM-Pebbles

    题目 题目链接:https://www.luogu.com.cn/problem/P3480 有 nnn 堆石子,除了第一堆外,每堆石子个数都不少于前一堆的石子个数.两人轮流操作每次操作可以从一堆石子 ...

  2. 洛谷 [P3480] KAM-Pebbles

    博弈论转化 本题的限制条件很多,我们尝试转化, 我们发现,定义 c[i] 为第 i 堆可以取得数量,如果第 i 堆取出了 x ,那么 c[i] - x , c[i + 1] + x 我们发现这是一个反 ...

  3. 洛谷-题解 P2672 【推销员】

    独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...

  4. 洛谷 P1142 轰炸

    洛谷 P1142 轰炸 题目描述 "我该怎么办?"飞行员klux向你求助. 事实上,klux面对的是一个很简单的问题,但是他实在太菜了. klux要想轰炸某个区域内的一些地方,它们 ...

  5. 洛谷 P1387 最大正方形

    P1387 最大正方形 题目描述 在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长. 输入输出格式 输入格式: 输入文件第一行为两个整数n,m(1<=n,m<=10 ...

  6. 洛谷P2763 试题库问题

    题目:https://www.luogu.org/problemnew/show/P2763 题目描述 «问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性. ...

  7. 动态规划——洛谷_P1057传球游戏

    题目: 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏.游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球, ...

  8. 洛谷P1417 烹调方案

    洛谷P1417 烹调方案 如果是一般的01背包的话 选的先后是没关系的 但是这题选的先后是有关系的,因为他的价值是随着时间而变化的, 而你的01背包是做不到先选2再选1的 那么我们就跟国王游戏一样 用 ...

  9. 记忆优化搜索(简单题)(洛谷P3183 [HAOI2016]食物链 )( P5635 【CSGRound1】天下第一 )

    昨天做了蓝桥杯的时候,发现自己对于记忆优化搜索甚是不熟悉,所以今天随便找了几个基础题做做,顺便写下两片题解,顺便用了一下devc++敲的代码,发现没有代码补全真的可以说是灰常难受了... 洛谷P318 ...

最新文章

  1. Python 安装 xlsx模块
  2. c#_异常捕获(try catch finally、throw)
  3. python脚本监控网站状态 - 赵海华_运维之路 - 51CTO技术博客
  4. 产品报价单模板_一文说透报价单,这么做才是专业!附模板及注意事项
  5. npm、webpack、vue-cli 快速上手版
  6. 团队建设及管理上的举措_为什么在副项目上工作是您作为开发人员的最佳举措...
  7. 能让IT部门告别996的办公神器,你一定要知道
  8. 不要再被Python洗脑了,来看看这个吧......
  9. MMO游戏技能攻击区域的计算2--给地图划分格子
  10. Docker教程小白实操入门(15)--如何使用WORKDIR、ENV、ARG和EXPOSE设置镜像
  11. U盘无法格式化的解决方法
  12. 开心网kaixin001状告kaixin,停用“开心网”名称,赔偿1000万元
  13. 为什么正经程序员不写注释?
  14. OneZero第四周第一次站立会议(2016.4.11)
  15. 分频器——秒分频、三分频、五分频、任意分频和偶数分频
  16. 初中英语语法(005)-时态
  17. 2022华数杯B题论文思路分析+完整代码(水下机器人组装计划)(一二问答案接出来和标准答案一样)(问题三四逼近正确答案)(完整论文,代码可直接跑)
  18. android 轮换实现动画,怎么在Android中实现一个首页无限轮播功能
  19. 【优化求解】基于蝗虫算法求解单目标问题附matlab代码
  20. 植物大战僵尸取消暂停

热门文章

  1. 什么是阿里云服务器?云服务器的优缺点
  2. 光耦合器的定义与概述
  3. vant中 tab栏遇到的坑 van-tabs。
  4. 使用IO流对文件进行读取功能
  5. 关键词挖掘采集python采集关键词挖掘数据SEO必备工具
  6. java web QQ (前言)
  7. VBS脚本病毒的特点!
  8. 微信小程序调用unicloud云函数的方法
  9. win服务器网络优化,还能再快一点,Win7网络优化参数详解
  10. 骨干网-网络建设特点