题目描述

我们考虑如何把问题转换成博弈论来求解。

我们对于每一行之前都加上一个空格。

设原来这一行的空格个数是 \(C\) ,那么此时空格个数变成 \(C + 1\) 。

然后按照从左到右的顺序给每一个空格标号。

接着构建出一个数组 \(p_i\) 。

\(p_i\) 表示从第 \(i\) 个空格开始后面有多少个连续的棋子。

比如像这样的一行棋盘:

\[\circ\circ\bullet\circ\circ\bullet\bullet\bullet\circ\circ\bullet\circ\bullet
\]

我们先在前面加上一个空格

\[(\circ)\circ\circ\bullet\circ\circ\bullet\bullet\bullet\circ\circ\bullet\circ\ \bullet
\]

不难发现,此时我们的 \(p\) 数组是这样的:

\[\{0,0,1,0,3,0,1,1\}
\]

我们可以发现如果我们移动第 \(2\) 个棋子会变成这样。

\[(\circ)\circ\circ\bullet\circ\circ\circ\bullet\bullet\bullet\circ\bullet\circ\ \bullet\\
p = \{0,0,1,0,0,3,1,1\}
\]

同理,我们可以发现所有的操作都可以把转换成 \(p\) 上的操作。

我们尝试着把 \(p_i\) 当作是第 \(i\) 个阶梯上的石子个数。

题目上的限制是移到右边最近的一个空格上。

让后通过模拟 \(2\sim 4\) 的棋子(再次不在给出结果)可以发现相当于是指定棋子向上一层移动。

(当然,最多只会向上一层移动,可以证明不会影响到其他的地方)

当所有的棋子变成这样时就结束了

\[\circ\circ\circ\circ\circ\bullet\bullet\bullet\bullet\bullet\bullet
\]

同理,也可以对应到所有的石子被移到最高层。

所以就是个 阶梯 \(\textbf{Nim}\)

Code

#include <bits/stdc++.h>

#define file(a) freopen(a".in", "r", stdin), freopen(a".out", "w", stdout)

#define quad putchar(' ')
#define Enter putchar('\n') const int N = 30; int T, n, ans2, a[N], ans1; signed main(void) {
// file("P2575");
std::cin >> T;
for (int test = 1; test <= T; test ++) {
std::cin >> n;
ans2 = 0;
for (int i = 1, m; i <= n; i++) {
scanf("%d", &m);
memset(a, 0, sizeof(a)); ans1 = 0;
int cnt = 20 - m + 1;
for (int i = 1, pos; i <= m; i++) {
scanf("%d", &pos);
a[pos] = 1;
}
int tot = 0;
for (int i = 1; i <= 20; i++) {
if (a[i] == 0) {
cnt --;
if (cnt % 2 == 1)
ans1 ^= tot;
tot = 0;
} else tot ++;
}
ans2 ^= ans1;
}
if (ans2 == 0) std::cout << "NO" << std::endl;
else std::cout << "YES" << std::endl;
}
}

P2575 高手过招 题解的更多相关文章

  1. 洛谷P2575高手过招——SG函数初试

    题目:https://www.luogu.org/problemnew/show/P2575 第一次用SG函数解决问题,有许多不熟练的地方: 试图按自己的理解写一个dfs,结果错了(连题都没读对,以为 ...

  2. Luogu P2575 高手过招

    题目链接 \(Click\) \(Here\) 关键在于转换成阶梯\(Nim\)的模型.最开始把题目看错了,理解正确后发现棋子可以向后跳不止一位,那么就比较简单了. 这里把空格看做阶梯,棋子看做硬币, ...

  3. P2575 高手过招

    传送门 直接搞好像搞不了 考虑转换模型 显然每一行棋子不会跑到其他行.. 所以可以把每一行的情况看成一个子博弈 显然整个答案就是每一行的SG值的异或和 不懂的回去学SG函数... 考虑怎么分析一行的状 ...

  4. 洛谷 [P2575] 高手过招

    SG函数+状压记忆化搜索 观察题目发现,每一行都是独立的,只要处理出来每一行的SG值,异或起来就好 每一行的SG值可以用状压+记忆化搜索的方法来求,对位运算技术是个很大的考验 注意SG值要预处理出来, ...

  5. 洛谷$P$2575 高手过招 博弈论

    正解:博弈论 解题报告: 传送门! 阿西$gql$又双叒被题意杀辣,,,再不好好学语文吃枣药丸$TT$ 然后在$get$规则之后还有什么问题嘛,,, 就和这题差不多了,一个$easy$的阶梯问题罢辽, ...

  6. Luogu 2575 高手过招-SG函数

    Solution SG函数跑一遍就过了ouo Code #include<cstring> #include<cstdio> #include<algorithm> ...

  7. LuoguP2575 高手过招(博弈论)

    空格数变吗?不变呀 阶梯博弈阶梯数变吗?不变呀 那这不就阶梯博弈,每行一栋楼,爬完\(mex\)就可以了吗? #include <iostream> #include <cstdio ...

  8. 2018.12-2019.1 TO-DO LIST

    AC自动机 P3808 [模板]AC自动机(简单版)(完成时间:2018.12.06) P3796 [模板]AC自动机(加强版)(完成时间:2018.12.06) P2444 [POI2000]病毒( ...

  9. 某大佬的TODOLIST

    回文串 manacher(完成时间:2018.12.10)回文串计数最长双回文串(完成时间:2018.12.10) 扫描线 棋盘制作巨大的牛棚玉蟾宫某个blog 汉诺塔相关 新汉诺塔SHOI 博弈论 ...

随机推荐

  1. 倒计时第3天!Google Summer of Code报名即将截止!(Casbin社区还有空缺名额)

    Google Summer of Code 介绍 Google Summer of Code ( GSoC ,即 Google 编程之夏)是 Google (谷歌)组织并提供经费,面对全球在读学生的在 ...

  2. 茴香豆的“茴”有四种写法,Python的格式化字符串也有

    茴香豆的"茴"有四种写法,Python的格式化字符串也有 茴香豆的"茴"有四种写法,Python的格式化字符串也有 被低估的断言 多一个逗号,少一点糟心事 上下 ...

  3. 爬虫篇-如何下载selenium及其适配谷歌浏览器插件chromedriver(含chrome各版本及下载地址)

    最近换了电脑,练习爬虫时用到selenium,结果在重新安装chromedriver插件的时候发现原网址不能使用,找了好久终于找到了了新网址,顺便更一篇详细使用的文章,希望可以对屏幕前的你有所帮助.本 ...

  4. Photoshop图片处理在线网页使用无需下载绿色

    今天给大家推荐一个ps在线版网页 实测使用效果不错,绿色简介,无需下载,不卡顿一般的电脑配置都可以带起来 因为是在线的所以是精简版的,但是一般ps软件有的工具,功能他都有,比较适合及时性使用 废话不多 ...

  5. 微博python爬虫weiboSpider注意事项

    首先我看的weiboSpider爬虫项目教程出自https://github.com/dataabc/weiboSpider 1.这爬取的是手机端的,所以我把网址https://weibo.com的. ...

  6. [笔记] 有向无环图 DAG

    最小链覆盖 (最长反链) 最小链覆盖 \(=n-\) 最大匹配. 考虑首先每个点自成一条链,此时恰好有 \(n\) 条链,最终答案一定是合并(首尾相接)若干条链形成的. 将两点匹配的含义其实就是将链合 ...

  7. PHP反序列化链分析

    前言 基本的魔术方法和反序列化漏洞原理这里就不展开了. 给出一些魔术方法的触发条件: __construct()当一个对象创建(new)时被调用,但在unserialize()时是不会自动调用的 __ ...

  8. 通过Go实现AES加密和解密工具

    本文包含如下两个内容: AES加密介绍及实现原理 Go实现AES加密和解密工具 AES加密介绍及实现原理 AES( advanced encryption standard)使用相同密钥进行加密和解密 ...

  9. 用 Go 快速开发一个 RESTful API 服务

    何时使用单体 RESTful 服务 对于很多初创公司来说,业务的早期我们更应该关注于业务价值的交付,而单体服务具有架构简单,部署简单,开发成本低等优点,可以帮助我们快速实现产品需求.我们在使用单体服务 ...

  10. 好客租房10-jsx的基本使用

    1.1createElement()的问题 1繁琐不简洁 2不直观 无法一眼看出所描述的结构 3不优雅 用户体验不爽 React.createElement("div",     ...