$\DeclareMathOperator{\sw}{sw}$
$\DeclareMathOperator{\sb}{sb}$
$\DeclareMathOperator{\dp}{dp}$
用 $\sw[i]$ 表示前 $i$ 个盒子中所有白盒子的权值之和。
用 $\sb[i]$ 表示前 $i$ 个盒子中所有黑盒子的权值之和。

对于偶数 $i$,用 $\dp[i]$ 表示此白盒子之前的所有盒子是否存在合法划分。

转移方程

$\dp[i] = \mathsf{true} \iff$ 存在偶数 $j < i$ 满足 $\dp[j] = \mathsf{true}$ 且 $\sb[i-1] - \sb[j] - (\sw[i-1] - \sw[j]) \ge X$ 。

注意到,$ \sb[i-1] - \sb[j] - (\sw[i-1] - \sw[j]) \ge X $ 即 $ (\sb[i-1] - \sw[i-1]) - (\sb[j] - \sw[j]) $ 。

题解上所说的

Let $W_1, \dots , W_k$ be the white boxes that appear in this tree, from left to right. The first player will take all these boxes, no matter what the second player does. These $k$ boxes split the sequence of boxes into $k + 1$ parts. For one of these parts, the first player takes all black boxes and the second player takes all white boxes. For all other parts, the first player takes all white boxes and the second player takes all black boxes. The choice of the "one part" depends on the second player’s strategy.

可以这样理解:

先手玩家可以事先从左到右任选 $k$ 个白盒子(即上图中的圆形)这些白盒子将余下的盒子分成 $k+1$ 段(即上图中的矩形,当总共有奇数个盒子时,最后一段可能是空的)。无论后手玩家如何应对,先手玩家总可以在最后一个阶段取走这 $k+1$ 段中某一段里的所有黑色盒子而结束游戏,而让先手玩家最后取走哪一段里的所有黑盒子完全由后手玩家确定。

有一种特殊情况需要注意:当 $n$ 为偶数时,若先手玩家在某一步拿走了最后一个白盒子,那么先手玩家的「最后一个阶段」只能是「取走最后一个白盒子之后的空段里的黑盒子」而不能是「取走最后一个白盒子之前的某一段里的所有黑盒子」,在这种情况下,先手玩家在最后一个阶段的行为是由先手玩家自己决定的,而不是由后手玩家决定的。事实上,如果先手玩家取了最后一个白盒子,那么他必然取走了全部白盒子而后手玩家取走了全部黑盒子。

所以最好是对 $n$ 为偶数的情况单独处理,这种情况下先手的策略是:取全部黑盒子或全部白盒子。

转载于:https://www.cnblogs.com/Patt/p/9335285.html

AGC 26 F Manju Game相关推荐

  1. Atcoder Grand Contest 026 (AGC026) F - Manju Game 博弈,动态规划

    原文链接www.cnblogs.com/zhouzhendong/AGC026F.html 前言 太久没有发博客了,前来水一发. 题解 不妨设先手是 A,后手是 B.定义 \(i\) 为奇数时,\(a ...

  2. 【Codeforces】716B Complete the Word (26个字母)

    http://codeforces.com/contest/716/problem/B 给你一个字符串该字符串中是否存在长度为26且这26个字母没有重复 一个满足上述条件但是部分区域是问号的话,需要用 ...

  3. AI回合制游戏,过程比较简单。程序中的f变量和条件语句用的很经典。

    本系列文章由zhmxy555编写,转载请注明出处. 文章链接  http://blog.csdn.net/zhmxy555/article/details/7447864 作者:毛星云    邮箱:  ...

  4. BugkuCTF 部分题解(随缘更新)

    之前做的题在BugkuCTF 部分题解(一) 佛系更新 2月3日更新了ezbypass 11月9日更新了奇怪的压缩包 11月7日更新了这个flag,就是逊啦.不可以破译的密码 bugku 佛系更新 M ...

  5. keras 的 example 文件 cnn_seq2seq.py 解析

    该代码是实现一个翻译功能,好像是英语翻译为法语,嗯,我看不懂法语 首先这个代码有一个bug,本人提交了一个pull request来修复, https://github.com/keras-team/ ...

  6. python-sendcmd主动模式访问ftp——修改port中IP地址信息

    用python访问ftp站点,主动模式发送port时,修改了IP地址,抓包分析网络会话信息.activesocket.py 1 #python for socket active mode 2 #!/ ...

  7. python练习册 每天一个小程序 第0004题

    1 #-*-coding:utf-8-*- 2 __author__ = 'Deen' 3 ''' 4 题目描述:任一个英文的纯文本文件,统计其中的单词出现的个数. 5 参考学习链接: 6 re ht ...

  8. poj1129Channel Allocation

    http://poj.org/problem?id=1129 四色定理  最多有四色 从1到四搜 View Code 1 #include <iostream> 2 #include< ...

  9. C语言输入3298运行结果为,浙江农林大C语言程序设计习题集答.doc

    第1-3章 C语言概述.算法.数据类型.运算符与表达式 一.选择题 ACDCB CCDCB AD 二.填空题 1.n=20 2.a=66,b=E 第4章 顺序程序设计 一.选择题 BAAD 二.程序阅 ...

最新文章

  1. Qt模态界面设置setWindowModality禁止其他界面响应
  2. Qt|Http笔记-两种方式发送http协议数据,获取服务器数据(GET方法)
  3. Spring boot - 使用redis实现session共享
  4. BZOJ1051|HAOI2006受欢迎的牛|强连通分量
  5. contains an expression but should be a constant
  6. 2018年哪项AI研究最紧迫?DeepMind联合创始人说是AI伦理
  7. [linux]centos6.3安装flash插件rpm方式
  8. 图标字体化浅谈[转]
  9. c++ 虚函数实现原理
  10. 五个手指含义(必会)
  11. 了解torch.nn.DataParallel
  12. 计算机无法打开命令,电脑点击运行cmd打不开怎么办
  13. 如何成为一名企业满意的UI设计师
  14. 如何评小学计算机课,小学信息技术优质课评选听课心得体会
  15. Yolov5+图像分割+百度AI接口——车牌实时检测识别系统
  16. SCAU 2022 Java综合性实验
  17. #02数据结构练习二
  18. 山东大学软件学院项目实训第四周
  19. echarts 矩阵图用法
  20. 关于Mock数据笔记

热门文章

  1. db2嵌套查询效率_详解oracle嵌套循环及实例说明
  2. cmos和ttl_【转】CMOS与TTL电路的区别
  3. python漏洞利用脚本_利用Python脚本实现漏洞情报监控与通知的经验分享
  4. python简介pdf_Py之pdfkit:python的库之pdfkit简介、安装、使用方法详细攻略
  5. PHP 8引入JIT支持,以提高CPU性能
  6. 【CodeForces】947 D. Picking Strings
  7. 由浅入深学习Apache httpd原理与配置
  8. Android-Gradle(四)
  9. Spring Boot Restful框架搭建和使用【持续更新中】
  10. 理解 Delphi 的类(十) - 深入方法[13] - 在 interface 区声明的方法