题解
【关于F题】如果有和过了暴力对拍但是没有AC的提交的话 请牛客或洛谷私信我(本人洛谷uid 124721 用户名:Ynoi)
A:
直接模拟,维护所有消息中连续水了多少条和每个人连续水了多少条即可。
B:
考虑贪心。对于某个位置,如果后面的操作完全相同,那么显然这个数越大,最终结果也越大。所以我们每次操作都尽可能让小
C:
按照
D:
考虑换根dp。
先任意选一个点为根。
首先定义
那么
然后假设断的是
算
注意在计算
E:
由于数据是随机的,我们考虑对于询问
期望复杂度证明如下
序列内随机一个数一个长度为m的区间的概率为
所以期望枚举
长度随机出长度为
所以单次询问枚举的期望次数就是
所以单次询问期望枚举
F:
先说wlwzgkd的判断。
1、2 算
之后的分析都是针对没有pop空deque的情况。
先假设是对于两个栈进行操作。(即假设3操作仅pop1操作进来的,4操作仅pop2操作进来的) 假设这两个栈为
那么,我们先搞出一个匹配序列(就求出一个1操作是被哪个3操作pop 24操作同理)。
然后当我们询问
先上结论,deque内部剩余的节点是 所有失配的操作1、2,删去最前面的x个, x是失配的3,4操作的个数。
(下面是证明)
下文中的前面指的是在opt序列里编号小。
我们考虑对于每个失配的pop操作,比如说是一个3操作 记作u。
那么它会pop掉T里尚存的最前面的那一个2操作。
那么会有如下两种情况:
1.T中pop了一个失配的2操作 那么这个2操作必然在这个3操作的前面 并且S里肯定没有比3更靠前的失配1操作了(不然这俩就匹配了) 那么pop的就是最前面的失配操作了。
2.T中pop了一个没有失配的2操作 那么有一个匹配这个2操作(记作x)的4操作(记作y)。那么T中也没有比y更靠前的失配2操作了(不然 如果比x靠前那么被 就这个操作被u pop了 如果比x靠后那么就和 y匹配了)
然后这个y就只能去匹配x里面的了 相当于一个失配的4操作 那么多次这样来回匹配之后就会发现 最后被pop掉的还是最前面的失配1,2操作。
知道这个结论之后 随便搞个数据结构(比如树套树)维护一下就可以了