2026.7.22 模拟赛
http://183.6.8.202:8888/d/contest/contest/6a603a8f6db0e02618c779ea
| T1 | T2 | T3 | T4 | |
|---|---|---|---|---|
| 实际得分 | 80 | 60 | 56 | 0 |
| 期望得分 | 80 | 100 | 100 | 0 |
| 能力得分 | 100 | 100 | 100 | 20 |
这场 T1 拼了 80 分,T2,T3 均想到正解,但是 T2 因为及其唐氏的错误挂掉(竟然大样例没有测出来),T3 写的分块遭到卡常(开 O2 就过了),T4 没有时间写特殊性质.
T1,T4 均是神秘构造,T2 是基环树,T3 是套着博弈论外衣的数据结构(不知道能不能算).
爆破
这道题 80 分不难想到:
对于每个 #,使用四个正方形拼出:使得刚好 # 减去次数比其他方格均多 1.
100 分只需要再改进一下:将一行连续的 # 看为一个整体,不难发现这样量级大约是 \(2n^2\).
事实上,这样交到 UOJ 上会被卡,原因是可以卡到 \(2n^2+2n\),这时候就要对 . 操作,将 . 减去的次数比其他方格均少 1.
分组
基环树上加权最大边独立集.
Lewisak:基环树就是一坨坨小屎堆成的大粪.
Lewisak:一道屎题的诞生:
出题人想到一个经典的树形 DP,将它搬到基环树上,
又觉得不够屎,加上了输出方案,
又觉得不够屎,改成了带权形式,
又觉得不够屎,将基环树改成了基环树森林与普通森林的混合体.
双子之争
结论是不难猜到的,就是需要维护区间的大于/小于某个数的最靠前的前缀.
可以使用一个前缀和,将单点修改转化成区间修改,将区间前缀查询,改为区间查询.
使用分块/线段树维护,(场上比较唐,将块内元素还进行排序,其实只需要维护最大值/最小值,把分块的维护方式搬到线段树上就是对的).
并查集
对于一个路径压缩并查集,求出一种操作方式,使其变为另外一种.
这道题数据范围是给到 \(O(n^2)\) 的,因此实现可以不是很精细.
考虑有效的操作,其实只有两种:
- 对于两个根节点进行
merge; - 对于孙子节点进行
find,使其变为儿子节点.
所有的操作均可以分解成这两种操作.
考虑倒序做这个操作:
- 将父亲与儿子断开;
- 将儿子节点变成孙子节点.
对于 \(b\) 数组,将儿子分成两类:
- 在 \(a\) 中的儿子;
- 在 \(a\) 中的根节点;
- 其他节点.
对于第 3 类节点,我们需要将它们变成对应儿子的孙子节点.
对于第 2 类节点,在其他儿子的子树中有其在 \(a\) 中的儿子,则将其变成对应儿子的孙子.
否则分裂第 2 类节点.
如何判断构造出的方案是否合法?只需要按照方案模拟一遍,检查即可.

浙公网安备 33010602011771号