题目传送门
分析:
集合G的成功的答案不好算,我们可以用1减去失败的概率,失败的的情况只可能是随机区间在G相邻两个元素之间
我们考虑集合删除,最暴力的就是使用Set直接删除
单次删除\(O(logn)\)不优,这道题维护信息只考虑删除的话可以使用双向链表
但是插入就麻烦了,我们不知道当前插入的关键点在哪里,需要二分,怎么做到\(O(1)\)呢
我们先把所有的字符串放进去检验,可以把Trie上的所有点的\(f\)求出来,并求出集合\(G\)
这样所有的关键点都求了出来,我们就可以保存好关键点\(O(1)\)插入了
可以使用莫队,但是链表插入时,插入的顺序必须严格对应之前删除的顺序,否则双向链表就会出现错误
于是使用黑科技:回滚莫队,不会的童鞋可以看看这篇博客
然后直接维护就好了
#include
#include
#include
#include
#include
#include
#include