摘要: "题目蓝链" Solution 由于每一个数最多被开根$5$次就会为$1$,所以我们可以用一个并查集维护下一个大于$1$的数的位置。然后再用树状数组维护一下区间和,每次修改直接暴力改就行了,修改的时候在树状数组上更新一下 时间复杂度$\mathcal{O}(n\ log\ log\ val + m\ 阅读全文
posted @ 2018-09-26 22:34 xunzhen 阅读(105) 评论(0) 推荐(0) 编辑
摘要: "题目蓝链" Solution 首先$\mathcal{O}(n)$预处理出任意一个前缀的HASH值,然后就可以$\mathcal{O}(1)$求出任意区间的HASH值 然后就直接枚举$k$,统计一下出现了多少种不同的区间段就可以了,用$map$或HASH表均可以实现 时间复杂度$\mathcal{ 阅读全文
posted @ 2018-09-26 22:26 xunzhen 阅读(153) 评论(0) 推荐(0) 编辑
摘要: "题目蓝链" Solution 考虑首先建出一棵最小生成树,然后再枚举所有其他的边。然后直接查询这条边对应在树上的两点之间的链上最大值和次大值,因为要保证严格次小。然后用查询的值更新一下答案 维护一条链上的最大值和次大值,直接倍增就行了 Code Summary 这道题的思路不是很难,结果在码码的过 阅读全文
posted @ 2018-09-26 22:19 xunzhen 阅读(117) 评论(0) 推荐(0) 编辑
摘要: "题目蓝链" Solution 这道题我们先把$z$离散化一下。然后我们对于每一个操作,直接在树上差分一下,在路径的两端打上对$z$加$1$的标记,在$lca$及其父亲处各打一个$ 1$标记,然后直接线段树合并就可以了 Code cpp include using namespace std; de 阅读全文
posted @ 2018-09-26 22:11 xunzhen 阅读(140) 评论(0) 推荐(0) 编辑