随机乱作 part 1

1. NOI2020 制作菜肴

题意不述。

瞎扯:对于 \(m=n-1\) 的情况,将 \(d_i\) 排序,每个先填补空缺直到可以填就填,最后一个补空。\(n\geqslant m\) 的情况可以通过填满几个转化为 \(m=n-1\)

对于 \(m=n-2\),假如我们把每个菜的两个原料连边,则不连通,于是可以转化为两个 \(m=n-1\) 的子问题。

2. ZJOI2020 抽卡

3. CTSC2018 假面

4. ZJOI2018 历史

\(30\) 分是简单的,就是 \(\sum S_x-\max\{1,2\max S_t,a_x-S_x\}\)

我们敏锐地观察到若 \(S_t\) 不是 \(S_x\) 的绝对众数,则翻倍了,所以最多翻 \(\log\) 次,就有了一个双 \(\log\) 的做法,喜提 \(80\) 分。

5. CF1168E Xor Permutations

6. CF1109F Sasha and Algorithm of Silence's Sounds

容易想到用线段树维护,移动右端点的同时记录每个左端点的 \(点数-边数\),然后维护最小值即个数。

然而这一切需要在没有环的前提下。

于是我们用 lct 维护加边删边,每次挪左端点直到没有环,然后相同方法用线段树维护即可。

7. 联合省选2022 学术社区

8. CF1288F Red-Blue Graph

9. CF798E Mike and code of a permutation

考虑一个 \(a_i\) 给到的信息,其实就是还没标记的一个前缀比 \(i\) 小,并且 \(a_i\)\(i\) 大。依据这个我们可以有一个连 \(O(n^2)\) 条边然后跑拓扑排序的做法。考虑到“前缀”的特殊性,容易想到要线段树优化建图,但难点在于每次要删除 \(a_i\)。不妨考虑类似主席树的思想,只重构 \(a_i\) 到根的链。于是我们的点数和边数都降为了 \(O(n\log n)\)

这是一个不难的题,但个人认为主席树优化建图的方法是较为新颖的。

10. CF848D Shake It!

posted @ 2022-08-29 00:44  syzf2222  阅读(47)  评论(0编辑  收藏  举报