CF1774
CF1774
A. Add Plus Minus Sign
看起来就很呆的A。
Statement
给你一个 01
序列,让你添加加减号,使得答案绝对值最小。
Solution
遇到一个 1
你就加,再遇到你就减。总能把结果维持在 0
或 1
。
B. Coloring
看起来很困难的 B。事实是,比 D 难。
Statement
有 \(n\) 个位置,\(m\) 种颜色,每种颜色要求涂 \(a_i\) 次,且保证 \(n=\sum\limits_{i=1}^{m} a_i\)。要求是连续 \(k\) 个位置颜色必须互不相同。
可以做到输出 YES
,反之 NO
。
Solution
看起来就不太会了。
首先我们可以钦定一些问题。比如 \(len=\lceil\frac{n}{k}\rceil\),那么如果有任意一个 \(a_i>len\) 时,我们都存在一个区间,使得这个长度为 \(k\) 的区间内有颜色相同的了。
那么我们还少考虑了一些在不能整除下的问题,就是当我们填完某一个颜色之后,可能由于下取整和限制的原因,最后一个区间就填不下了这个颜色了,所以我们计算所有 \(a_i=len\) 的数量,如果这个值比最后一段的长度要大,那么就填不下了。
C. Ice and Fire
。
Statement
有 \(n\) 个人,第 \(i\) 个人的温度为 \(i\)。
环境类型为 \(0\) 或 \(1\)。若环境为 \(0\),则温度低的人胜利,若环境 为\(1\),则温度高的人胜利,\(n-1\) 个环境类型组成一个长为 \(n-1\) 的二进制串 \(s\)。
若 \(x\) 个人参与游戏,则共有 \(x-1\) 场战斗,环境类型即为 \(s\) 的前 \(x-1\) 个元素。在有不少于 \(2\) 个人时,任选 \(2\) 个人进行战斗,其中第 \(i\) 场战斗的环境类型为 \(s_i\)。
对于任意一个从 \(2\) 到 \(n\) 的 \(x\),如果所有温度不超过 \(x\) 的人都参与比赛,有多少人有机会获胜(活到最后)。
Solution
首先,如果它是末尾加了相同的 01
字符,答案是不会被改变的。
那么如果第一次连续被打破,那么答案种类就可能是很多,也就是说,可以通过最后一次转折,打败原来的最大或最小,并且这个转折是可以随意发生的。
因而,最后答案就是 \(n-1-末尾最长连续段长度\)。
D. Same Count One
极为正常的一道题。
Statement
给定 \(n\) 个长度为 \(m\) 的,只包含 \(0\) 和 \(1\) 的数组,选择任意两个数组交换位置 \(pos\) 上的数。在经过最少的操作后使得每个数组中的 \(1\) 数量相等,并输出操作过程。.
Solution
无解就是 \(0\) 的个数总和不能被 \(n\) 整除。
有解的时候我们对于每一列,都记录下可以被转移的行,然后转移就行。
记得清空!!尤其是无解之后要清空!!!
E. Two Chess Pieces
Statement
最初,树的 \(1\) 号节点上有两个棋子。对每个操作,您可以选择任意一个棋子,并将其移动到相邻节点。你需要确保两个棋子之间的距离不会超过 \(d\)。
给你两个序列,分别表示两个棋子需要经过的节点(可以以任何顺序经过)。最终,它们必须回到根节点。作为一个好奇的男孩,Cirno_9baka 想知道最少操作次数。
Solution
我们考虑如果全部要经过,那么答案肯定就是 \(4\times (n-1)\)。
下面考虑如果一个棋子,它不需要到达一个点,会对答案减少多少。
首先,不需要到达的前提是:
- 这个点不在这个棋子需要到达的序列中。
- 另外一个棋子在这个子树内最深所需要到达的点和这个点距离小于等于 \(D\)。
答案显然减少 2。
类似 树形dp 方式,复杂度 \(O(n)\)。