其实写题面的时候埋了不少彩蛋啊?大家可以试一试能找出几个?
几何冲刺
出题人 ftiasch
数据和题解 WrongAnswer
验题人 matthew99
算法一
对于每对红点
如何判断
算法二
考虑将问题进行转化。
注意到点
按其中一维排序,用数据结构(如树状数组或set)维护另一维即可。具体实现方式是按其中一维从小到大顺序扫描每个点,如果是蓝点则插入数据结构,如果是红点则在数据结构中查询另一维比该点小的蓝点。时间复杂度
算法三
算法二还可以进一步优化。
我们可以一开始以原点
之后枚举点
这样时间复杂度为
去月球
出题人 WuHongxun
数据和题解 Scape
验题人 worse
算法 1
首先我们先来证明一个结论 即最终答案和消除顺序无关。
如果在某个时刻删掉了
那么在删左边这个
对于这个结论也有一个wiki
那对于每个询问,我们都拿一个栈暴力跑一遍就可以知道答案了
时间复杂度
算法 2
我们考虑Subtask 2
我们显然只要考虑出现了两次的括号
对于某个出现了两次的权值
那么对于某个询问
判断是否可消除可以直接建一棵树来判断。
而第二个约束是显然可以通过二维数点来实现的。于是这个Subtask就被解决了。
算法 3
Subtask 3是给离线做法的,我们先来考虑离线。
我们进行分治,对于当前分治区间
我们设中点是
考虑把两个区间合并,新发生的消除显然只会是前面区间的某个后缀和后面区间的某个长度相同的前缀翻转过来完全相同。我们接下来就是要求一个lcp。
考虑怎么求lcp,
而在线就显然只需要把每个区间的trie和结果都存下来,对于每个询问都去对应的分治区间查询。
那么我们如果用倍增/树剖去求LCA,我们可以做到
如果我们用RMQ去求LCA,我们可以做到
如果更丧病一点用
标算用的是RMQ求LCA。
但是还有一个小细节是如果我们想要做到每个询问回答是
我们有两个做法,第一个做法是分治实际上就是一棵线段树,那么某个询问对应的分治区间实际上就是他们的
或者我们也可以用一个更简单的方法,我们把分治这棵线段树开到
这题
算法4
from matthew99
考虑我们像算法二那样建一棵操作树,保证对于这棵树的每个子树都是可以完美消除的。
我们直接类似算法三分治后建trie的做法,我们从左往右扫,如果当前字符和栈顶匹配就回到父亲,不然就把当前字符压到栈内并且走到对应的儿子。
对于这棵树,我们从任意一个节点出发,经历一个可完美消除的序列后,它都一定会回到这个节点本身。
所以对于某个询问
正常的写法是
如果用hash_map和
具体实现细节可以参考这个submission
量子破碎
出题人 WuHongxun
数据和题解 WuHongxun
验题人 fateice
算法0
我们用操作4,暴力
算法1
我们考虑怎么优化这个暴力。
我们可以注意到我们大部分的时间都在查空的
注意
而把所有别的位都改成0不是一个可逆的操作,所以肯定是无法用2实现的。
我们只好用操作3来做到把除了第
然后用操作4查一下
因为要对每个
算法2
我们考虑如何丢掉算法1里的最后一步用操作4查
如果直接随机,那么无论xor是0还是1,都会随机返回0或1(每次x会重新随机)。
为了区分出来我们做变换
这样如果xor是0,那么一定会返回0,否则会随机返回0或1。
随机多次判断即可,复杂度
算法3
fateice 在验题时提出一个hack。注意题面里有提到交互库的实现,会在概率平方和为0的时候返回0。
如果平方和不为0,返回0的概率很小。
那么只要每次把一位做变换
复杂度
算法4
我们考虑对每一位
如果我们在变换前枚举第
那么变换后如果这位xor为0,那么
最后一步用操作4查一下
询问复杂度
算法5
@fateice 在算法1上稍微修改一下,丢掉操作3的玄学做法。
我们可以对旋转矩阵,
然后对除了第
算法6
我们思考一下算法4,不难发现这其实是一个fwt!算法2中我们用它得到了一些non-trivial的信息,算法4中我们用
考虑fwt中
fwt之后位置
为
所以我们
我们是不是随机线性无关的
很可惜,这些
因为每一维选不选定为
不过这只是偶数的情况,如果我们把它变成and有奇数个1,那么我们可以用
考虑怎么变成奇数个1,只要在一个xor为1的位,应用算法4中的变换
我们每次枚举一位,然后应用变换
询问复杂度
算法7
我们用另外一个方向理解一下为什么秩只能有
xor方程组始终都有两个解
但是我们知道答案不可能是
期望要随机
询问复杂度
算法8
matthew99在验题的时候,猜想是fwt,于是,fwt之后暴力枚举
询问复杂度
由于交互库很慢,所以只能让这种做法通过了。不过思考到fwt,可以说已经解决了这道题的一半了。
题目背景
其实这道题目相当于给出
如果把题目中
这个算法其实正是量子计算机上寻找循环节的Simon算法,正是这个算法启发了著名的Shor算法。
FWT和高斯消元从入门到精通