CTT2022 解题报告
因为摇奖想看博客,所以这篇文章发出来了!
CTT2022 解题报告
场切题数在 Day4 突破了 0,可喜可贺!
D1T1 区间计数
一个简单的想法是计算【有多少个区间满足它和某个比它更左的区间有相同的可重集合】。
-
更左的区间不与该区间相交
这样的区间最多一个
-
更左的区间与该区间相交
可能有多个更左的区间
我们考虑计算满足【有情况 1】+【有情况 2】-【同时有情况 1 和 2】即可。
我们定义 \(b_i\) 为位置 \(i\) 上的数上一次出现的位置,第一次出现的数给一个不合法的值。
情况 1 是经典的值域连续段问题。
情况 2 可以描述为【存在某个后缀区间 \([l',r]\) 使得该后缀满足情况 1,且 \(\max_{i=l'}^rb_i=l-1\)】。
我们希望在最小后缀处计数,可以用线段树维护。
情况 1 & 情况 2 只是再多单调栈上二分一下就行了。
D1T2 一眼丁真
邓老师神秘题。
D1T3 白兔的迷宫
一个通用的做法是,使用线性变换描述通过一条边的变化,然后高消就行了。
D2T1 报复社会
A 的目标是尽快删完黑点,B 的目标是尽快删完白点。
考虑 Subtask2:树深度只有 3 层。
对于一个菊花,假如它被删掉了根,接下来 A 去删原本菊花里的黑点,B 去删白点,那么菊花的结构可以简化成单个颜色的若干个叶子。
当一个菊花里只有若干个黑点时,B 肯定不想去打开这个菊花,可以认为菊花的根也是黑色的。
唯一特殊的情况是菊花里黑白数量相同,此时删根的人一定亏。
观察到此时菊花大小为奇数,考虑如果剩下来一个这样黑白数量相同的菊花,\(n\) 为奇时 A 得删,\(n\) 为偶时反之。
正解考虑一层一层缩菊花就行了。
D2T2 赫露艾斯塔
\(n\) 个平面上的点,每次把一个左下角的所有点扫到右边线/上边线,查询一个点左下角的点数。
将点集分成被扫过和没被扫过两部分维护。
平面左下角存在一条折线分界线,未移动的点都在分界线上方。
每次新的操作会造成均摊 \(O(1)\) 的线段插入删除,维护两维的前缀点数。
查询考虑如果点在分界线下方,那么答案为 0,否则将查询差分为右方,上方,右上方三部分。
右上方均为为扫过的点,离线二位数点即可,上方和右方对扫过的部分和没扫过的部分分别利用前缀和计算。
时间复杂度 \(O(n\log n)\)。
D2T3 树据结构
由于满足树编号为一个 bfs 序以及所有叶子深度相同,可以发现每层的点数不降。
那么只有 \(O(\sqrt n)\) 种本质不同点数。
每一次的修改可以拆成对每个块的修改,修改是二维前缀和,离线下来最后一起做即可。
时间复杂度 \(O((n+q)\sqrt n)\)。
D3T1 澡堂
首先可以把人按 \(\bmod m\) 分组,每组独立。
对于一组,答案为 \(\sum_{i=1}^n\max_{j\leq i}\{t_j-jT\}+iT-t_i\)。
注意到是一个前缀 max 问题,修改可以直接上平衡树上楼房重建,得到一个 \(O((n+mq)\log^2n)\) 的做法。
由于修改独立的特殊性,其实有更好的做法。
考虑预处理出每组中的每个位置往后第一个超过该位置的值,倍增。
查询时二分、倍增即可,时间复杂度 \(O((n+mq)\log n)\)。
D3T2 解谜游戏
一个经典的结论是当 \(n\) 足够大时,随机一个排列是错排的概率为 \(\dfrac 1 e\)。
每次从一个非错排出发,试图二分出其中一个正确的位置。
考虑我们每次按住左半边的数,把右半边随机打乱,如果询问的答案比原来小,那么右半边有正确的位置,递归到右边,否则足够多次后询问的答案都不变,我们认为右半边没有正确的位置,递归到左半边。
这个“足够多次”并不好把握,可能需要一个稍大的阈值才能保证正确性,我们考虑对算法稍加修改。
我们轮流按住一边的数,随机打乱另一边,一直随机到某一侧询问答案比原来小。这一做法期望 \(2e\) 次打乱就能找到有正确位置的一半了。这个做法在出题人的实现下可以拿到 61pts。
接下来需要对做法的细节进行优化以得到更好的常数,题解中提到了 3 个优化。
因为没地方交,所以没有实现,现在写这种常数优化好像也没用。
D3T3 士兵游戏
sol 感觉有点长,不想写。
D4T1 一般路过串串题
SAM 板子,具体不记得了。
D4T2 排列
本题是密码学中的经典结论,其中b=1时构造的排列被称为深度为3的 Feistel Network。
注意到两种交互库运行时间有区别,查 256 次用运行时间区分即可。
考虑 \(b=1\) 时排列有什么性质可以用。
首先任取 \(a_0\circ a_1\),询问得到 \(a_3\circ a_4=P(a_0\circ a_1)\)。
然后取一个偏移量 \(\Delta(\Delta\neq 0)\),令 \(b_0=a_0\oplus \Delta,b_1=a_1,c_3=a_3,c_4=a_4\oplus \Delta\)。
询问得到 \(b_3\circ b_4,c_0\circ c_1\)。注意到 \(b_2=c_2=a_2\oplus \Delta\)。
那么有 \(b_1\oplus b_3=c_1\oplus c_3\)。
若 \(b=0\),这 4 个量都可以认为是随机的,满足这个式子的概率不超过 \(2^{-64}\)。
D4T3
事实上本题似乎存在用 0 次容斥, 1 次容斥, 2 次容斥, 3 次容斥 的几种不同思路, 最后都能够通过本题.
神秘 EI 题。可能听懂了 xtq 的 2 次容斥。