题目描述

TBL和X用巧克力棒玩游戏。每次一人可以从盒子里取出若干条巧克力棒,或是将一根取出的巧克力棒吃掉正整数长度。TBL先手两人轮流,无法操作的人输。 他们以最佳策略一共进行了10轮(每次一盒)。你能预测胜负吗?

输入

输入数据共20行。 第2i-1行一个正整数Ni,表示第i轮巧克力棒的数目。 第2i行Ni个正整数Li,j,表示第i轮巧克力棒的长度。

输出

输出数据共10行。 每行输出“YES”或“NO”,表示TBL是否会赢。如果胜则输出"NO",否则输出"YES"

样例输入

3
11 10 15
5
13 6 7 15 3
2
15 12
3
9 7 4
2
15 12
4
15 12 11 15
3
2 14 15
3
3 16 6
4
1 4 10 3
5
8 7 7 5 12

样例输出

YES
NO
YES
YES
YES
NO
YES
YES
YES
NO

提示

20%的分数,N<=5,L<=100。
40%的分数,N<=7。 50%的分数,L<=5,000。
100%的分数,N<=14,L<=1,000,000,000。

先手如果想赢只要第一次将最多的异或和为0的巧克力棒(即剩余的巧克力棒无论如何取都没有异或和为0的方案)都拿出来即可。这样先手就将必败态(异或和为0)留给了后手,后手无论是吃巧克力还是取巧克力都会将必胜态(异或和不为0)留给先手。那么只要搜索一下所有方案看是否有异或和为0的方案即可,因为有异或和为0的方案就说明先手能取最多异或和为0的巧克力棒。

#include<set>
#include<map>
#include<queue>
#include<cmath>
#include<stack>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
int T;
int n;
int a[20];
int ans;
int num;
void dfs(int dep,int x)
{if(dep==n+1){if(num==1&&x==0){ans=1;}return ;}dfs(dep+1,x);num=1;dfs(dep+1,x^a[dep]);
}
int main()
{T=10;while(T--){scanf("%d",&n);num=0;ans=0;for(int i=1;i<=n;i++){scanf("%d",&a[i]);}dfs(1,0);if(ans==0){printf("YES\n");}else{printf("NO\n");}}
}

转载于:https://www.cnblogs.com/Khada-Jhin/p/9609654.html

BZOJ1299[LLH邀请赛]巧克力棒——Nim游戏+搜索相关推荐

  1. BZOJ1299 [LLH邀请赛]巧克力棒

    怎么又是博弈论...我去 Orz hzwer,这道题其实是可以转化成Nim游戏的! "第一步: 先从n根巧克力棒中取出m(m>0)根,使得这m根巧克力棒的xor和为0,同时使得剩下的n ...

  2. 【BZOJ】1299: [LLH邀请赛]巧克力棒

    [算法]博弈论 [题解]这道题不是典型的SG函数题了. 不把它当成游戏看待,那么这道题是在说n个石子堆,每次可以加入若干个或进行Nim游戏. 我们当前先手,则考虑构造必败态来获胜. 当前已加入的NIm ...

  3. LeetCode实战:Nim 游戏

    背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 You are pla ...

  4. 经典数学问题:Nim游戏

    Nim游戏的数学理论论述 Nim游戏是博弈论中最经典的模型,是组合游戏(Combinatorial Games)的一种,属于"Impartial Combinatorial Games&qu ...

  5. Nim 游戏 、⽯头游戏1、石头游戏2

    Nim 游戏 .⽯头游戏1.石头游戏2 文章目录 Nim 游戏 .⽯头游戏1.石头游戏2 **一:Nim 游戏** **二:⽯头游戏** **三.石头游戏2** **方法一:DP 函数** **方法二 ...

  6. 博弈论(一):Nim游戏

    从今天开始,我将会用一系列文章介绍博弈论(Game Theory)的基本知识,以OI中可能用得着的为主.当然,我对博弈论的理解还很肤浅,而且我写东西的风格向来都是"个人心得"而非& ...

  7. 【JZOJ4178】【NOI2015模拟YDC】游戏(阶梯nim游戏)

    Problem Input Output Hint Solution 刚看到题就知道是正解想不出暴力打不出的博弈... 比赛时我也想了一会,但是只想到了40points... 40points:状压D ...

  8. 【学习笔记】NIM游戏与SG函数初探

    公平组合游戏ICG 游戏条件介绍: 由两名玩家交替行动 游戏进程的任意时刻,可以执行的合法行动与轮到的玩家无关 若当前玩家无法行动,则判负 则称该组合游戏为公平组合游戏.如NIM游戏等即是经典的公平组 ...

  9. [博弈论] Nim游戏及SG函数(经典+台阶+集合+拆分)

    文章目录 0. 前言 1. Nim 游戏+模板题 2. 台阶 - Nim 游戏+变种题 3. Mex运算与SG函数 4. 集合 - Nim 游戏+变种题 5. 拆分 - Nim 游戏+变种题 0. 前 ...

最新文章

  1. Linux下时间戳格式和标准时间格式的转换
  2. jquery地址栏链接与a标签链接匹配添加样式!
  3. C#中计时器Stopwatch的使用
  4. Delphi 与 DirectX 之 DelphiX(71): TDIB.Negative;
  5. 关于在页面中针对不同版本的IE浏览器实现不同的JS或者CSS样式
  6. mysql是开放源代码_但这可能是很因难的,因为MySQL是开放源代码的,所以任何人...
  7. 二次优化问题dfp_MATLAB优化问题应用实例讲解
  8. 计算机软件录音注意事项,录音笔使用注意事项
  9. 区块链供应链金融应用场景解决方案
  10. 重温经典:Windows1.0系统体验和尝试自己编写Windows1.0系统
  11. 用python写生日快乐说说_生日快乐的说说(精选50句)
  12. STM32单片机网络通信调试
  13. windows server 2003序列号
  14. mysql建立spj_数据库概论——SQL练习一(SPJ零件问题)
  15. mysql分组查询学生平均年龄_那些年我们一起做过的[分组查询]_MySQL
  16. 6-23 sdust-Java-可实现多种排序的Book类
  17. 产品周报第29期|创作中心优化:发文助手新增质量分检测功能,博文增加内容历史版本
  18. css关于:hover的使用
  19. 以资本串起一个软件局
  20. 配置haproxy支持使用多个lan内网ip做负载均衡以突破haproxy机只支持64k连接(突破单ip 65535端口限制)

热门文章

  1. evaluate函数使用无效_在Matlab中使用tensorflow (2)
  2. @transaction使自定义注解失效_【完美】SpringBoot中使用注解来实现 Redis 分布式锁...
  3. arch linux 同步时间,ArchLinux 设置系统时间
  4. dom4j jar包_XML解析之DOM4j以及XPATH技术
  5. 欢迎参与 KubeVela 官方文档翻译活动
  6. Seata-AT 如何保证分布式事务一致性
  7. echart 时间滚动_基于 ECharts 封装甘特图并实现自动滚屏
  8. php @socket_write,FluffOS 中文站 | socket_write() 函数
  9. linux代码环境配置,linux下配置环境变量【原创】(示例代码)
  10. boot spring 怎么执行hql_彻底透析SpringBoot jar可执行原理