摘要: 用manacher算法O(n)求出所有的回文半径。有了回文半径后,就可以求出L[i]表示以i结尾的回文串的起始位置的和R[i]表示以i起始的回文串的结尾位置的和,然后就可以求出答案了,这里要注意奇偶长度回文串的不同处理。复杂度O(n) 1 #include<bits/stdc++.h> 2 usin 阅读全文
posted @ 2016-09-15 16:53 我在地狱 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 取出纵向边按x坐标排序,在y方向上建立线段树。 每次查询当前有效长度len,ans += len*(x[i]-x[i-1]); 其中len为T[rt].len; 查询完毕后更新y方向上线段树,入边+1, 出边-1。 1 #include<bits/stdc++.h> 2 using namespac 阅读全文
posted @ 2016-09-15 13:52 我在地狱 阅读(203) 评论(0) 推荐(0) 编辑