7.10 CWOI 模拟赛

A 操作

发现选择的前面一定越小越好,因为后面造成的贡献一定不会大于前面造成的,所以我们可以先选所有的 \(0\),再选最后的 \(0\) 后面所有的 \(1\),以此类推。

设上面选出来的序列是 \(t\),答案就是 \(\sum _ {i = 1} ^ n (9 - t _ i) \times \frac{1}{10 ^ i}\)

B 树

强烈谴责 CQBZ,\(2s\) 时限只开了 \(0.7s\)

树上路径,直接点分治,然后需要维护的就是 \(a _ u\) 大于等于 \(x\) 的最长路径长度,是后缀信息,可以树状数组。

因为最大值不好撤销,所以正着做一次,反着做一次。

C 翻转

题解看不懂,但是网络流过了。

显然,一个位置的值只会是 \(|a _ i - a _ {i + 1}|\)\(|a _ i + a _ {i + 1}|\)

我们需要限制值的数量,所以对每个可能出现的值建一个点,向汇点连容量为 \(1\),费用为 \(0\) 的边。然后在左边我们建出对应 \(n - 1\) 个点,从源点向它们连容量为 \(1\),费用为 \(0\) 的边,对应原序列,然后第 \(i\) 个点向 \(|a _ i - a _ {i + 1}|\) 连容量 \(1\),费用 \(0\) 的边,向 \(|a _ i + a _ {i + 1}|\) 连容量 \(1\),费用 \(1\) 的边。

因为这个 \(1\) 费用相当于修改了一个地方,而一次操作可以更改至多两个地方,所以最后答案为 \(\lceil \frac{\text{minCost}}{2} \rceil\)

posted @ 2025-07-12 11:06  xguagua_233  阅读(7)  评论(0)    收藏  举报