随笔分类 - 倍增
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=5415 [算法] 对于v到1的1条合法路径 , 我们将其分为两段考虑 1. v -> u , 该路径上的最短边长大于等于P 2. u -> 1 显然 , 我们要求所有这样的路径中dist
阅读全文
摘要:Problem A. Two distinct points [题解] 显然 , 当l1不等于r2时 , (l1 , r2)是一组解 否则 , (l1 , l2)是一组合法的解 时间复杂度 : O(1) [代码] Problem B. Divisors of Two Integers [题解] 首先
阅读全文
摘要:[题目链接] 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=2588 [算法] 如果我们能知道“u到v这条路径上权值<= k的数的个数” , 那么就可以通过二分的方式求出答案 进一步地 , u到v路径上权值<= k的数的个数 = u到根节点路径上权
阅读全文
摘要:[题目链接] https://codeforces.com/contest/1051/problem/F [算法] 注意边数 - 点数 <= 20 , 我们不妨首先求出图的任意一棵生成树 , 不在生成树内的边最多有21条 , 这些边不同的端点最多有42个 对这些点分别运行Dijkstra最短路 回答
阅读全文
摘要:[题目链接] https://loj.ac/problem/539 [算法] 首先 , 我们用f[u][k]表示现在在景点u ,还有k元钱 , 最多能够走多少路 不难发现f[u][k] = max{ f[v][k - P[u]] + Dist(u,v,min(C,ci)) } ( dist(u,v,
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4326 [算法] 首先,此题的答案是具有单调性的,因此可以二分答案mid 检验答案时,我们判断每条路径的长度是否大于mid,若大于mid,则说明至少要将这条路径上的一条边变为“虫洞” 因
阅读全文
摘要:[题目链接] https://www.luogu.org/problemnew/show/P1967 [算法] 可以证明答案一定为最大生成树上两点路径中的最小值 树上倍增即可 时间复杂度 : O((N + Q) log N)[代码]
阅读全文
摘要:[题目链接] https://www.luogu.org/problemnew/show/P1084 [算法] 细心观察发现 : 此题的答案具有单调性,也就是说,如果p小时能控制疫情,那么q小时也能控制疫情(q > p),因此我们可以二分答案,这是此题的突破口 问题就转化为了检验”Mid小时是否可以
阅读全文
摘要:[题目链接] https://www.luogu.org/problemnew/show/P1081 [算法] STL-set + 倍增 + DP [代码]
阅读全文
摘要:【题目链接】 https://www.lydsy.com/JudgeOnline/problem.php?id=1602 【算法】 倍增求LCA 【代码】
阅读全文
摘要:【题目链接】 点击打开链接 【算法】 首先,有一个结论 : 一定有一棵严格次小生成树是在最小生成树的基础上去掉一条边,再加上一条边 这个结论的正确性是显然的 我们先用kruskal算法求出最小生成树,然后,枚举不在最小生成树上的边,我们发现若加上这条边, 则形成了一个环,用最小生成树的权值和加上这条
阅读全文
摘要:【题目链接】 点击打开链接 【算法】 树上倍增,时间复杂度 : O(qklog(n)) 【代码】
阅读全文
摘要:【题目链接】 点击打开链接 【算法】 求出这个图的最小生成树,对于每次询问,用倍增法求出最近公共祖先,查询最小生成树上两点路径上的最大值 算法的正确性? 假设x和y在最小生成树中路径上的最长边为p,那么,根据kruskal算法的执行过程,我们发现p合并 了x和y所在的集合 假设有一条边q,满足q <
阅读全文
摘要:【题目链接】 点击打开链接 【算法】 预处理i^k的前缀和,对于每次询问,树上倍增即可 时间复杂度 : O(nk + mlog(n)) 【代码】
阅读全文
摘要:【题目链接】 点击打开链接 【算法】 倍增法求最近公共祖先 【代码】
阅读全文
摘要:【题目链接】 点击打开链接 【算法】 这是一道经典的最值查询(RMQ)问题。 我们首先想到线段树。但有没有更快的方法呢?对于这类问题,我们可以用ST表(稀疏表)算法求解。 稀疏表算法。其实也是一种动态规划的算法。是先做一遍预处理,然后O(1)求出答案。 设计状态 : f[i][j] 表示从第i个数开
阅读全文
摘要:【题目链接】 点击打开链接 【算法】 LCA + 树上差分 【代码】
阅读全文

浙公网安备 33010602011771号