hdu4994 博弈,按顺序拿球
2024-10-19 04:35:01
题意:
给你n堆东西,两个人博弈的去拿,每次最少一个,最多是一堆,必须按顺序那,也就是只有把第一堆的东西拿完了才能去拿第二堆东西,谁先拿完谁胜,问新手是否能胜利。
思路:
显然是博弈,既然是博弈那么我们首先要干的事就是找必胜状态(或者必败状态),对于任意一组数据(先假设里面没有某一堆里面的个数是1的时候)先手肯定是必胜的,因为先手可以每一次都只给这一堆留一个,让后手去拿这一个,到最后一堆的时候一下子全部拿走,现在把有1的情况加进去,如果在开始就遇到连续的1的话就有可能失去主动权,只有开头连续个1的个数是偶数的时候最后主动权才还是自己的,中间部分有1的情况不用考虑,我们可以先手可以通过全拿完或者给后手留一个来调节自己的必胜状态,还有一个就是全是1的时候记得特判一下。
#include<stdio.h>
int main ()
{
int t ,n ,i ,num;
scanf("%d" ,&t);
while(t--)
{
scanf("%d" ,&n);
int mk = 0;
for(i = 1 ;i <= n ;i ++)
{
scanf("%d" ,&num);
if(num != 1 && !mk) mk = i;
}
if(!mk && n % 2 || mk && (mk - 1) % 2 == 0)
printf("Yes\n");
else printf("No\n");
}
return 0;
}
最新文章
- PHP的命名空间 与类是自动加载
- window 下如何安装ghost博客
- 图书馆管理系统UML建模
- Verilog (二) multiplexer and decoder
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(九) Policy Injection Application Block
- BTE 增强
- 在Activity之间传递数据—获取Activity返回的数据
- 检测CSS属性 是否支持
- 一个shell脚本给客户使用服务器生成一个序列号
- shell进程中的特殊状态变量
- 把ajax包装成promise的形式(2)
- lambda,linq
- linux安装教程
- Behavior Tree 用 Lua 实现一个最简行为树
- Json使用示例
- Oracle关于自连接、左外连接、右外连接、全连接
- ubuntu 上安装ssh
- 使用 scm-manager 搭建 git/svn 代码管理仓库(二)
- zabbix监控tcp状态
- 小峰mybatis(1) 处理clob,blob等。。
热门文章
- Amazon Connect 配置ccp端的soft phone配置(客服坐席工作站配置)
- Reincarnation Without New Body(RWNB): Basic Theory and Baseline 现世转生基本理论及简单操作
- CVE-2019-10758-Mongo-express-远程代码执行
- 200-Java语言基础-Java编程入门-004 | Java分支与循环
- WAV16T VPX国产化千兆交换板
- DDD实战课--学习笔记
- golang 实现距离幂算法
- P1540_机器(JAVA语言)
- PTA 递增的整数序列链表的插入
- 用程序员的思维了解Filecoin