A. Tree Puzzle
题意:一棵高度为 0
和 1
表示。有这样一个操作:
- 一开始选择一个点
,翻转它的状态 - 如果这个点不是叶子,那么挑一个它的儿子继续操作:如果
的初始状态是0
,挑左儿子,否则挑右儿子。
给出一个序列:1
,否则是 0
。
求出把所有节点状态都改成 0
的最小操作次数。
题解:考虑暴力的 dp 做法,令 0
或者 1
的操作最小次数。可以发现,可以自底向上贪心的操作每一个点。有如下的转移方程:
其中
可以发现,对于每一层,所有
最终输出
B. Xoring Machine
题意:对于一个长度为
L
:考虑 ,R
:考虑 ,
给出初始序列
题解:可以发现这两个操作是互逆的,也就是说一对 L
和 R
可以互相抵消。因此,我们只需要将那个表达式处理成有多少个 L
或者 R
即可。
之后就是分 L
和 R
分别做即可。
C. Reduce the Sequence
题意:给出一个长度为
题解:假设
我们很容易得到,
最终答案就是
D. Tree
题意:给出
- 把节点
颜色染成 - 求出距离节点
不超过 的点里,本质不同的颜色个数。
题解:先以
那么对于修改操作,我们可以
E. Magic Roads
题意:有个 1
。有
- 给出节点
,把和 相邻的边状态取反 - 给出整数
,求出所有状态为1
的边里面,边权第 小的边的标号
题解:考虑用分块维护当前哪些边的状态是 1
,块大小可以搞成
F. Patterns
题意:有
题解:令
于是可以爆搜出所有可能的
G. ABACABA Matching
题意:对于一个
给出一个字符串
题解:令 0
的个数,那么可以发现
对于
我们不妨枚举
然后注意到,如果
因此,我们对于每个
H. Intervals
题意:给出 0
到 9
里面哪些数位是好的,一个好的数仅由好的数位组成。给出
题解:令
- 从高位到低位处理到第
位; - 这一位中已经从前
个区间选了数; - 当前选得数在区间里的状态为
; - 给第
位的进位是 ; - 当前选得数位总和是
;
转移的时候可以先固定
I. Danger
题意:给出
- 给从
到 路径上的边边权都加上 ,最多只有 个这样的操作。 - 求出距离
不超过 的所有点构成的子树的边权和。
题解:先
也可以大力树分治,复杂度
J. Redundent Edges
题意:给出
题解:对于每条边