1 min read 156 words Updated Apr 25, 2026 Created May 03, 2026

去年今时,我得了 100 + 0 + 0 + 8 分,太抽象了 QwQ

所以为什么今天才写这个东西?因为今天才做完了 T2……

[NOIP2022] 种花

简单前缀和优化 DP,不谈。

[NOIP2022] 喵了个喵

非常高级的构造题。

看到 $k = 2n - 1/2$,我们可能会想到每一个栈内放两个即可,留一个辅助栈,即可完美过掉 $k = 2n - 2$ 的东西。

考虑我们如何处理多出来的那一个。

我们向后考虑,如果一个元素在栈顶有,那么可以直接消掉,但是不在栈顶存在,那么一定在栈底,所以我们必须保留一个空栈使得可以将栈底的他消掉。

设这个只在栈底的元素为 $x$,其头上一定有一个元素 $y$,一个简单的想法是将 $a_i$ 压在 $y$ 头上,自然留下了一个空栈。

但是考虑序列为 $a_i, y, x$ 的情况,此时由于原本的 $y$$a_i$ 压着,所以只能将新的 $y$ 放入空栈中,但是如此 $x$ 就没法消掉了,这十分恼人。

但是观察到这种情况出现当且仅当 $y$$a_i - x$ 内的出现次数为奇数,所以我们换一个思路,将 $a_i$ 放在空栈中,这样到 $x$ 的时候,$y$ 也被消完了,此时 $x$ 所在的栈就变成了空栈。

回来考虑偶数次的情况,我们可以在这里面将 $y$ 给消完,所以我们将 $a_i$ 压在 $y$ 上,每次将 $y$ 放在 $a_i$ 上,那么自然到 $x$ 的时候,$x$ 的上面就只有 $y$$a_i$,并且原本的空栈还是空着的,所以可以将 $x$ 消掉,此时 $y, a_i$ 形成一个新的两个元素的栈。

注意这里新的 $y$ 只能压在 $a_i$ 头上,否则可能影响到原本处于栈顶,但是被 $y$ 压着无法消掉的情况。

按照此规则模拟即可。

[NOIP2022] 建造军营

考虑到每次只会删一条边,那么意味着军营间原图的割边一定需要被看守。

于是边双缩点,一个联通分量内的边可守可不守,变成在树上进行 DP。

计数很烦人,考虑是否能够转化为期望进行计数。

于是我们求在边 $2^m$ 随机中合法方案数的期望。

考虑 $f_i$ 表示 $i$ 所在的强连通分量被选中(但是可能没有军营),初始显然是 $2^{siz_i}$

考虑加入一个子树,由于其中的连边有 $\frac 12$ 的概率断开/连上,所以 $f_i = \frac 12 f_i + \frac 12 f_i f_y$

最后我们统计所有的答案,为了不重复,我们只枚举深度最浅的那个点。

由于必须与父亲的边断开,以及非空,所以需要减 $1$,并且有一个 $\frac 12$ 的系数:$\sum \frac 12 (f_i - 1)$

但是考虑根没有父亲,所以没有 $\frac 12$ 的系数,特判一下即可。

最后乘上 $2^m$ 即可。

但愿不会再遇到套路,太抽象了。

[NOIP2022] 比赛

被玩烂的题 QwQ,见 # 算法学习笔记(33): 矩阵乘法与线段树标记