洛谷P3480 KAM-Pebbles
题目大意:
有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相关推荐
- 【洛谷P3480】KAM-Pebbles
题目 题目链接:https://www.luogu.com.cn/problem/P3480 有 nnn 堆石子,除了第一堆外,每堆石子个数都不少于前一堆的石子个数.两人轮流操作每次操作可以从一堆石子 ...
- 洛谷 [P3480] KAM-Pebbles
博弈论转化 本题的限制条件很多,我们尝试转化, 我们发现,定义 c[i] 为第 i 堆可以取得数量,如果第 i 堆取出了 x ,那么 c[i] - x , c[i + 1] + x 我们发现这是一个反 ...
- 洛谷-题解 P2672 【推销员】
独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...
- 洛谷 P1142 轰炸
洛谷 P1142 轰炸 题目描述 "我该怎么办?"飞行员klux向你求助. 事实上,klux面对的是一个很简单的问题,但是他实在太菜了. klux要想轰炸某个区域内的一些地方,它们 ...
- 洛谷 P1387 最大正方形
P1387 最大正方形 题目描述 在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长. 输入输出格式 输入格式: 输入文件第一行为两个整数n,m(1<=n,m<=10 ...
- 洛谷P2763 试题库问题
题目:https://www.luogu.org/problemnew/show/P2763 题目描述 «问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性. ...
- 动态规划——洛谷_P1057传球游戏
题目: 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏.游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球, ...
- 洛谷P1417 烹调方案
洛谷P1417 烹调方案 如果是一般的01背包的话 选的先后是没关系的 但是这题选的先后是有关系的,因为他的价值是随着时间而变化的, 而你的01背包是做不到先选2再选1的 那么我们就跟国王游戏一样 用 ...
- 记忆优化搜索(简单题)(洛谷P3183 [HAOI2016]食物链 )( P5635 【CSGRound1】天下第一 )
昨天做了蓝桥杯的时候,发现自己对于记忆优化搜索甚是不熟悉,所以今天随便找了几个基础题做做,顺便写下两片题解,顺便用了一下devc++敲的代码,发现没有代码补全真的可以说是灰常难受了... 洛谷P318 ...
最新文章
- Python 安装 xlsx模块
- c#_异常捕获(try catch finally、throw)
- python脚本监控网站状态 - 赵海华_运维之路 - 51CTO技术博客
- 产品报价单模板_一文说透报价单,这么做才是专业!附模板及注意事项
- npm、webpack、vue-cli 快速上手版
- 团队建设及管理上的举措_为什么在副项目上工作是您作为开发人员的最佳举措...
- 能让IT部门告别996的办公神器,你一定要知道
- 不要再被Python洗脑了,来看看这个吧......
- MMO游戏技能攻击区域的计算2--给地图划分格子
- Docker教程小白实操入门(15)--如何使用WORKDIR、ENV、ARG和EXPOSE设置镜像
- U盘无法格式化的解决方法
- 开心网kaixin001状告kaixin,停用“开心网”名称,赔偿1000万元
- 为什么正经程序员不写注释?
- OneZero第四周第一次站立会议(2016.4.11)
- 分频器——秒分频、三分频、五分频、任意分频和偶数分频
- 初中英语语法(005)-时态
- 2022华数杯B题论文思路分析+完整代码(水下机器人组装计划)(一二问答案接出来和标准答案一样)(问题三四逼近正确答案)(完整论文,代码可直接跑)
- android 轮换实现动画,怎么在Android中实现一个首页无限轮播功能
- 【优化求解】基于蝗虫算法求解单目标问题附matlab代码
- 植物大战僵尸取消暂停