CTT2022 解题报告

因为摇奖想看博客,所以这篇文章发出来了!

CTT2022 解题报告

场切题数在 Day4 突破了 0,可喜可贺!

D1T1 区间计数

一个简单的想法是计算【有多少个区间满足它和某个比它更左的区间有相同的可重集合】。

  1. 更左的区间不与该区间相交

    这样的区间最多一个

  2. 更左的区间与该区间相交

    可能有多个更左的区间

我们考虑计算满足【有情况 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\) 时排列有什么性质可以用。

\[x_2=x_0\oplus f_1(x_1)\\ x_2=x_4\oplus f_3(x_3)\\ x_1\oplus x_3=f_2(x_2) \]

首先任取 \(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 次容斥。

posted @ 2022-12-27 18:21  juju527  阅读(468)  评论(1编辑  收藏  举报