12 2018 档案
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2733 [算法] 用线段树维护图的联通块 , 并查集维护连通性 加边时可以直接线段树合并 时间复杂度 : O(NlogN) [代码]
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=3545 [算法] 离线加边 , 用并查集维护连通性 , 然后线段树合并即可 时间复杂度 : O(NlogN) [代码]
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=3307 [算法] 考虑树上差分 : 在路径x-y上每个点放一个物品c , 等价于 : 在x到根节点的路径上放一个物品c , 在y到根节点的路径上放一个物品c , 然后在x和y的最近公共祖
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1901 [算法] 首先 , 考虑没有修改操作 不妨建立可持久化线段树 , 第i棵树维护区间[1 , i]中的数的出现个数 , 则可以通过在线段树上二分的方式求出答案 那么 , 若有修改操
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=3295 [算法] 记Lx表示第x个数的出现位置 显然 , 每次删去一个数 , 逆序对数减少([1 , Lx - 1]中 > x的数的个数 + [Lx + 1 , n]中 < x的数的个数
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2141 [算法] 首先求出原序列中的逆序对个数 考虑交换两个数的位置 , 对答案产生的影响 显然 , (x , y)对答案的贡献为 : -(x对答案的贡献) - (y对答案的贡献) +
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=3196 [算法] 树套树即可 笔者的这份代码使用的是线段树套伸展树 时间复杂度 : O(NlogN ^ 3) [代码]
阅读全文
摘要:[题目链接] https://codeforces.com/contest/161/problem/D [算法] 点分治 记cnt[u][i]表示以u为根的子树中深度为i的点有多少个 时间复杂度 : O(NlogN) [代码]
阅读全文
摘要:[题目链接] https://www.luogu.org/problemnew/show/P4781 [算法] 拉格朗日插值即可 时间复杂度 : O(N ^ 2) [代码]
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2816 [算法] 对每种颜色的边建一棵LCT , 维护联通性即可 时间复杂度 : O(C * NlogN ^ 2) [代码]
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=3669 [算法] 首先离线 , 将边按A值从小到大排序 然后用LCT动态维护以B值为关键字的最小生成树即可 时间复杂度 : O(NlogN ^ 2) [代码]
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2002 [算法] LCT动态维护森林连通性 时间复杂度 : O(NlogN ^ 2) [代码]
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1180 [算法] 动态树维护森林连通性 时间复杂度 : O(NlogN ^ 2) [代码]
阅读全文
摘要:[题目链接] https://codeforces.com/contest/787/problem/D [算法] 线段树优化建边 , 然后用Dijkstra算法求单源最短路 时间复杂度 : O((N + M)logN) [代码]
阅读全文
摘要:[题目链接] https://codeforces.com/contest/960/problem/F [算法] 记fi表示以第i条边结束最长的路径 可以用线段树优化该dp , 注意动态开点 时间复杂度 : O(MlogN) [代码]
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2594 [算法] 首先离线 , 将删边操作转化为倒序加边 假设我们已经维护出了一棵最小生成树T , 若加入了一条边(u , v , w) , 那么形成了一个环 ,考虑kruskal算法的
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4300 [算法] 记Fi表示二进制表示下第i位为1的最长序列 可以通过枚举二进制的每一位进行转移 时间复杂度 : O(NlogV) [代码]
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2482 [算法] 线段树维护历史最值 时间复杂度 : O(NlogN) [代码]
阅读全文
摘要:[题目链接] https://codeforces.com/contest/877/problem/E [算法] 首先求出这棵树的DFS序 一棵子树的DFS序为连续的一段 , 根据这个性质 , 用线段树维护区间中1的个数即可 时间复杂度 : O(NlogN) [代码]
阅读全文
摘要:[题目链接] https://codeforces.com/contest/914/problem/D [算法] 显然 , 当一个区间[l , r]中为d倍数的数的个数 <= 1 , 答案为Yes , 否则为No 线段树简单维护即可 , 详见代码 , 时间复杂度 : O(NlogN ^ 2) [代码
阅读全文
摘要:[题目链接] https://codeforces.com/contest/920/problem/F [算法] 显然 , 一个10 ^ 6以内的数在经过最多6次操作后就会变为1或2 , 这是因为一个数的因子个数是根号级别的 用筛法预处理10 ^ 6以内每个数的因数个数 , 用线段树维护即可 , 修
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2049 [算法] LCT动态维护森林连通性 时间复杂度 : O(NlogN ^ 2) [代码]
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=3282 [算法] LCT模板题 时间复杂度 : O(NlogN ^ 2) [代码]
阅读全文
摘要:[题目链接] 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. 右端点向
阅读全文

浙公网安备 33010602011771号