YAIU 非官方营业日志(P4)

 

「SDOI2019」 移动金币

题面:

一个 的棋盘上最初摆放有 枚金币。其中每一枚金币占据了一个独立的格子,任意一个格子内最多只有一枚金币。Alice 和 Bob 将要进行如下的一场游戏。二人轮流操作,且 Alice 先行。当轮到一个玩家的时候,他可以选择一枚金币,并将其向左移动任意多格,且至少移动一格。金币不能被移出棋盘,也不能越过其它金币。如果轮到一个玩家的时候他已经无法做出任何有效操作了(显然这个时候 枚金币恰好落在最左侧的 个格子中),则被判定为输家。已经知道 Alice 和 Bob 都是极致聪明的人,他们在任何局面下总能做出最优的操作。那么有多少初始状态能保证 Alice 必胜呢?

题解:

首先这个等价于一个阶梯 Nim 问题:

阶梯 Nim 问题:有一个楼梯,每个台阶上放了一些金币,每个人每次操作可以选择一级台阶将上面的一些金币放到下一级;不能操作的输。

结论:所有奇数级台阶上的金币数量异或起来就等于这个游戏的 SG 值。

简要证明:偶数级台阶可以是没有用的,因为一个人进行完一次偶数级操作后,另一个人可以再把那些金币放到更下面的一级,抵消这个操作;而操作奇数格相当于删除这些金币。这个思想很有意思。

现在我们就是要 个数异或和为 的数且他们的和小于等于 的方案数(最后还要插板法一下)。我们直接对于每一位分别考虑,每一位都是加上 的形式;注意系数上还要再乘上一个

AC Submission Click Here!

「ICPC WF 2017」 Money for Nothing

题面:

给定平面中一些红点和黑点,求以红点为左下角且以黑点为右上角的矩形的最大面积。

题解:

首先若存在 使得 点就没有用了。我们去掉所有没用的红点和黑点,剩余的图如下:

它并不可二分,比如图中这三个绿色的矩形;但研究一下,它具有决策单调性。即如果 的决策点是 ,那么 的决策点不可能是 。如下:

我们有:

因此我们直接用分治法解决这个决策单调性问题;但是我们会发现有一些细节,就是当这个 到每个黑点都不合法怎么办?我们只保证 ;对于 的,另面积为负数;直接这么做即可了。

AC Submission Click Here!

CF514E Darth Vader and Tree

题面:

有一个无限大的有根树,树上的每一个节点都有 个子节点(),任意一个节点它的第 个子节点之间的距离为 )。

给出一个数 ),求有多少个节点到根节点的距离小于等于 ,输出答案对 取模后的结果。

题解:

对于这样一个无限递归的问题,我们直接写出状态转移方程:

直接矩阵快速幂即可。AC Submission Click Here!

CF1428F Fruit Sequences

题面:

给定一个长度为 的 01 串 ,求出:

其中 表示 中最长连续全 1 子串的长度。

题解:

数据结构学傻啦!数据结构学傻啦!这个题 哟!设 。当 时,;否则, 表示上一处这么多的连续一是在哪个位置。

SPOJ COT3 Combat on a tree

题面:

给定一棵 个点的树,每个节点初始时是黑色或白色。

两个人博弈,轮流进行操作,每次操作选择一个白点 ,然后将 路径上的所有点染成黑色,谁先无法操作谁输。

要求判断先手是否必胜,若是,则还需给出所有先手的第一步方案。

题解:

这个题算是我做题经历最曲折的之一了。设 为只考虑 子树时的 值,于是我写下了第一个假结论:

这个错误的原因是没有考虑到 函数的 在再加入一个新的后继状态后不止可能增加一。于是我们考虑用更加大力的方式维护 值——我们直接维护所有后继状态。设 子树所有后继状态构成的集合,那么我们可以得到如下的转移方程:

直接用带翻转标记的 01 Trie 合并维护即可;注意一定要带标记,不能在合并时再计算翻转,因为子树下面可能挂着一堆尚未被翻转的点。

考虑如何输出方案?设 solve(u,k) 为在 子树内找到后继状态 的方案,直接递归下去执行即可。