摘要:
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4592 [算法] 对于操作1 , 我们首先查询区间[l0 , r0]中有多少个1 , 然后二分求出最大的x(x <= r1)使得[l1 , x]中0的个数 <= [l0 , r0]中1的 阅读全文
摘要:
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1009 [算法] 首先用kmp预处理最长的后缀 = 前缀 然后 , 用Fi,j表示前i位 , 匹配j位的方案数 矩阵优化即可 时间复杂度 : O(M ^ 3logN) [代码] 阅读全文
摘要:
[题目链接] http://poj.org/problem?id=2774 [算法] 后缀数组 详见2009国家集训队论文集之 : 《后缀数组——处理字符串的有利工具》 时间复杂度 : O(NlogN) [代码] 阅读全文
摘要:
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=3083 [算法] 树链剖分 时间复杂度 : O(NlogN ^ 2) [代码] 阅读全文
摘要:
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=3306 [算法] 若没有换根操作 , 那么“查询子树最小值”就可以用DFS序 + 线段树解决 进一步地 , 可以发现换根后 , 造成影响的点在原根到新根的路径上 , 根据这个性质 , 问 阅读全文
摘要:
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1858 [算法] 用线段树维护 : 1. 区间中1的个数 2. 左端点向右延伸最长连续1的长度 3. 右端点向左延伸最长连续1的长度 4. 左端点向右延伸最长连续0的长度 5. 右端点向 阅读全文
摘要:
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=3238 [算法] 首先 , LCP(Ti , Tj) = min{ height[rank[Ti] + 1] , height[rank[Ti] + 2] , ... , height[ 阅读全文
摘要:
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1717 [算法] 首先二分答案 , 然后将后缀分组即可 详见2009国家集训队论文集之 : 《后缀数组——处理字符串的有利工具》 时间复杂度 : O(NlogN) [代码] 阅读全文
摘要:
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1031 [算法] 将字符串倍长 , 构建后缀数组 , 然后按要求输出即可 时间复杂度 : O(NlogN) [代码] 阅读全文
摘要:
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2588 [算法] 如果我们能知道“u到v这条路径上权值<= k的数的个数” , 那么就可以通过二分的方式求出答案 进一步地 , u到v路径上权值<= k的数的个数 = u到根节点路径上权 阅读全文