03 2021 档案
摘要:题面传送门 在看这篇题解之前你需要先掌握的知识是:二项式定理,拉格朗日插值,强大的推式子能力 我们定义为在二进制表达下的个数。 我们要求的就是这样一个式子 考虑这个东西其实不是很好搞,对其进行扰动
阅读全文
摘要:题面传送门 实际上是一种类似于分治的思想求第小子串。 首先构造好SAM。 用拓扑排序预处理出每个节点走下去会碰到多少个子串。 然后对于当前的第大子串,我们从小往大枚举,然后看看能不能走下去即可。 时间复杂度 code: #include<cstdio> #include<c
阅读全文
摘要:题面传送门 先来考虑两个字符串的最长公共子串怎么求。 考虑SAM有一个性质:源点到任意点的任意路径都是原串的一个子串。 这个性质就可以搞了。 首先对于第一个串建立AC自动机,然后让第二个串在第一个串上跑匹配。 这样就可以计算答案了。 但是对于多个串怎么办呢? 可以在每个节点上都对于每个串计算答案并取
阅读全文
摘要:题面传送门 统计后缀间的LCP自然想到要用SAM做。 那么就是求两点间lca的深度。 容易发现枚举然后统计子树间信息即可。 但是这个东西是每次dfs一遍算贡献。如果卡卡能卡到 对于这个一个套路就是建立虚树。 时间复杂度 code:
阅读全文
摘要:题面传送门 这道题给了没有修改的部分分,考虑怎么拿到这些分数。 然后发现我们可以枚举每个节点然后算贡献。 可以发现如果两个不同子树的access就会产生一个贡献。 然而如果一个子树过大那么就没有那么多贡献。 从而我们可以一次树形dp解决掉。 然而这个东西带修就不是很好做了。 可以发现这个东西和树链剖
阅读全文
摘要:题面传送门 一开始傻子一样的写了个线段树分治+LCT常数巨大只得了分和没有按秩合并的并查集一样分数。 然后我们发现这个东西删掉的边数很少,所以如果每一次都把这个东西重新初始化一边很不划算。 然后可以发现有很多边在一大段区间内都是存在的。 所以就可以上线段树分治了,连通性用并查集维护。 这个是
阅读全文
摘要:题面传送门 感觉统计答案那一步很妙啊。 其实对于每个节点代表的字符串集合的出现次数很容易统计。 但是我们发现一个节点所代表的其实是一组字符串,而这个东西看上去只能线段树覆盖,时间复杂度是的。 然而spoj死慢的机子紧张的时限使得这个不怎么容易通过。 然而我们发现这个答案具有单调性
阅读全文
摘要:题面传送门 就这道题我打了一个小时我太菜了。 首先这道题爆搜不可取算了吧。 然后其实这道题可以dp 因为乘法和加法不同所以分开来算。 先算乘法,定义区间内组成值的最小操作数。这个区间就可以了。复杂度 然后考虑加法,同样也是一样的
阅读全文
摘要:题面传送门 考试时盯着这个看了很久然后以为是只能连续选一段于是爆零了。光荣成为唯一一个没有通过的人。 首先先将右端点排序。 然后依次加入。 如果能加入就加入。 如果不能,那么就找到最大的比较,如果可以就加进去并把最大的弹出来。 这个过程可以用堆维护。 时间复杂度 code: #i
阅读全文
摘要:题面传送门 首先如果最后一起搞那么拓扑排序一遍就好了。 但是这道题它有多次询问。 联合SAM本质就可以知道增加的数量就是 这个怎么理解呢?源点到每个点的路径数就是子串数且等于 那么显然就可以了。 code: #include<cstdio> #include<cst
阅读全文
摘要:题面传送门 众所周知线段树套线性基不能上标记。 所以直接搞肯定不行。 考虑差分,然后就可以转化成单点修改了. 另外再维护一个树状数组作为单点查询原数列。就可以做了。 复杂度 code: #include<cstdio> #define I inline #de
阅读全文
摘要:题面传送门 这种东西一看就是要后缀什么求的。 然后发现lcp其实就是SAM上的LCA。 然后就可以做了。 但是其实这道题的式子很奇怪,其实就是SAM上的任意两个后缀代表的点的后缀和。 所以可以用简单的方法统计所有路径和即统计一条边经过几次而不用拆式子然后树形dp。 时间复杂度 code:
阅读全文
摘要:题面传送门 思维不够就拿数据结构来凑啊qwq 因为cdq的方法太神奇了,所以蒟蒻只能写LCT了。 因为LCT可以维护加边的最小生成树,所以考虑用LCT来维护。 但是有一个问题这道题还有删边。 但是我们惊奇地发现LCT是可以撤销的。 所以可以上线段树分治转删边为加边,然后复杂度要上去一个log 不过不
阅读全文
摘要:题面传送门 自环太坑了。 首先如果离线那么显然回滚莫队+并查集就可以愉快地通过了。 但是这个是强制在线的。所以考虑换一种做法。 可以发现联通块个数就是点数减去有用的边数。 我们可以看看对于每个点,从哪个点开始可以被计算入边数。 这个可以用LCT维护时间最大生成树来搞。 然后因为强制在线。所以可以用主
阅读全文
摘要:题面传送门 LCT常数其实并没有我们想象的那么大。 这道题有连边操作肯定想到LCT。 我们可以用LCT动态维护树的直径。 具体的,如果把两棵树合并,那么直径一定是这两棵树的四个端点的两个。这样的话分种情况讨论即可。 但是我们可以发现这道题完全不用这样讨论,因为有一棵树是一个点,所以直接砍掉一半
阅读全文
摘要:题面传送门 不判重边调一年。 首先这道题看上去很不好做。考虑枚举一个然后算另一个。 那么就是要找所有第一个边权小于当前值的边构成的图中与之间的最小瓶颈路。这个东西用最小生成树+倍增就可以解决。 但是这棵最小生成树在动,所以直接用LCT维护即可。 注意一定要判重边。 code: #incl
阅读全文
摘要:题面传送门 首先我们可以列出这个式子: 如果你仔细阅读了莫比乌斯反演的相关内容,你大概可以推到$\sum\limits_
阅读全文
摘要:近期我在做[NOI2010] 能量采集写了一个莫反+整除分块,然而我并不会算他的复杂度。 可以发现这个的复杂度是这样的 由调和级数可以知道上面这个东西是不超过的。但是实际上这东西和线性的差不多快。 我实测了$n=108
阅读全文