摘要: 考虑分块,每块维护两个标记$ts,td$。那么对于块中一个位置$i$,它的实际值为$i\times td+ts+v_i$。修改的时候,对于整块,直接打标记,对于零散的暴力修改,然后重构凸壳,时间复杂度$O(\sqrt{n})$。查询的时候在凸壳上二分即可,时间复杂度$O(\sqrt{n}\log n... 阅读全文
posted @ 2015-11-21 17:14 Claris 阅读(451) 评论(0) 推荐(0)
摘要: 对于一棵无根树,它的重心个数不超过2。 枚举每个重心,以重心为根求出这棵有根树的最小表示,然后取字典序最大的即可。 对于有根树的最小表示,可以看成括号序列,每次把子树的括号序列按字典序排序后依次串连起来即可。 #include<cstdio> #include<string> #include<al 阅读全文
posted @ 2015-11-21 02:23 Claris 阅读(1263) 评论(0) 推荐(0)
摘要: 对所有询问串建立AC自动机。然后将母串在AC自动机上跑,每走到一个点x,从x点出发沿着fail指针能到的所有前缀都是匹配成功的,暴力向上走,碰到走过的就break,这样每个点最多只会被标记一次。时间复杂度$O(N+100M)$。#include#includeconst int N=10000003... 阅读全文
posted @ 2015-11-21 01:35 Claris 阅读(691) 评论(0) 推荐(0)