Examples

2023-5-13 #54 我们的歌谣仍会重构初见梦想的瞬息

—— 信弦《被洞悉的心与红石蒜色的救赎》

THUSC 乱打了一通,我怎么这么菜。

这篇存草稿忘发了,现在发一下。

352 PKUSC2023 D1T2

容易发现合法的条件即不存在民的被覆盖集合与狼相同,于是枚举与狼覆盖集合相同的子集容斥,注意到我们只关心这个子集大小的奇偶性,以及要么包含所有元素,要么不包含任意元素的区间数量。

枚举未选择的前缀长度后 dp 便可以做到 \(O(n^5)\)。注意到包含所有元素的区间事实上可以将序列拼成一个环转化为前一种情况,旋转环把狼放在最前面 dp 就不需要枚举前缀长度了,复杂度 \(O(n^4)\)

353 PKUSC2023 D1T3

考虑菊花的情况,不带修的情况是一个经典的分治 NTT,带修即:

\[[x^{\lfloor\frac d2\rfloor}]\frac{P(1+vx)}{(1+p_ux)(1-x)}\prod (1+p_ix) \]

根号重构,先把块内未修改的位置拉出来分治 NTT,修改时把单项式暴力乘起来并依次提取系数。

回到原问题,依旧考虑根号重构,建出修改位置形成的虚树,考虑怎么快速计算虚树一条边造成的贡献:其方向确定,每个点对应的 \(p_u\) 是唯一的,链上点暴力分治 NTT 预处理系数即可刻画一个点的影响。由于转移都是线性变换,随便做做就好了(纯口胡,我也不保真!)。

复杂度 \(O(n\sqrt n\log n)\)(话说这能过吗)。

354 ECFinal 2022 B Binary String

将环上 \(0,1\) 分为长度为 \(1\) 的连续段与长度 \(>1\) 的连续段,每次操作事实上是长度 \(>1\) 连续段之间互相撞掉一个数,且 \(0\) 连续段左移,\(1\) 连续段右移(我们不妨忽略长度为 \(1\) 的连续段,认为其为空位)。

假设 \(1\) 数量更多,我们将串 shift 使得每个前缀 \(1\)\(0\) 多,于是可以求出每个 \(0\) 连续段消失时间,模拟出所有均消失时的串形态(可以算出每个 \(1\) 到的位置)并算算循环节就好了,复杂度 \(O(n)\)

355 ECFinal 2022 G Rectangle

三条直线平行的情况很好做,考虑如何处理两横一竖,我们枚举竖线,问题变为加删线段,问有多少个点对符合条件。

一个朴素的想法是,枚举每个靠左的点,计算出另一个点所在的区间,类似 P9120 [春季测试 2023] 密码锁 地考察 \(P=\min r_i\)\(Q=\max l_i\),可知左边的点一定要 \(\leqslant P\),右边的点一定要 \(\geqslant Q\)

使用线段树维护该信息,将其记作 \([u_i,v_i]\),我们想直接维护 \(u_i,v_i\) 之和,但会有 \(u_i>v_i\) 的情况。由于 \(u,v\) 在范围内均有单调性,不合法的一定是一段前缀,可以二分出来。而 \(u_i=\max(i,Q)\)\(v_i\) 不过是一个后缀 \(\min\),使用楼房重建线段树维护即可。

复杂度 \(O(n\log^2 n)\)

356 ECFinal 2022 K Magic

尝试钦定一些位置满足条件,对于两个区间 \(l_1<l_2<r_1<r_2\),注意到 \(l_2\)\(r_1\) 不能同时被选,事实上可以证明这是充分的(可以取出一个环,然后反证)。

主席树优化建边+dinic 或 bitset 都可以通过。

357 ECFinal 2022 L Aqre

阴间。

一个比较直觉的想法是切分成很多 \(4\times 4\) 的子棋盘,每个子棋盘有一个排列 \(p\) 表示在所有 \((i,p_i)\)\(0\)

事实上我们可以直接用这种棋盘覆盖整个网格,算出答案上界可知其达到了上界。

但是 \(n=2,3\) 的情况需要特殊讨论,手玩构造一下就行了。

补一下之前欠的一道题

165 L Proposition Composition

割的两条边一定有一条链边,一条的情况很好做,两条合法的条件是其非链边覆盖集合相同,考虑如何维护:

我们直接维护等价类,有效分裂次数只有 \(n-1\) 次,我们需要快速找到需要分裂的等价类,可以使用启发式分裂较为暴力地处理分裂。

每个链表用线段树维护每个点对应前驱后继,线段树二分即可,复杂度 \(O(n\log n)\)

posted @ 2023-05-13 21:00  xiaoziyao  阅读(177)  评论(0编辑  收藏  举报