今天有听陈老师的录音带说到赚钱最重要的秘诀是什么呢? 是 倍增时间 倍增时间时间倍增 倍增...?值得思考
转载 2007-07-26 13:34:00
108阅读
2评论
倍增, 从字面的上意思看就是成倍的增长 ,这是指我们在进行递推时,如果状态
原创 2023-02-17 11:10:01
77阅读
P6148 [USACO20FEB] Swapity Swapity Swap S 每一次置换的操作均为相同的,所以置换是满足结合律的,考虑倍增。 预处理出 \(f_{i,j}\) 表示第 \(i\) 个数经过 \(2^j\) 置换后变成了什么数,\(f_{i,0}\) 模拟即可$$f_{i,j}= ...
转载 2021-10-29 20:40:00
122阅读
2评论
倍增专题 P1306 斐波那契公约数 一个重要性质:gcd(f[n],f[m])=f[gcd(n,m)]gcd(f[n],f[m])=f[gcd(n,m)]gcd(f[n],f[m])=f[gcd(n,m)],然后就矩阵快速幂加速即可。 具体说明见下面的文章。 https://harris.blog.csdn.net/article/details/115028278 P1383 高级打字机 主席树,需要动态维护一个子树大小,然后更新和查询就是基本操作了。 P1383 高级打字机(PST) PSTPST
原创 2021-08-10 09:26:28
105阅读
在做树上问题时,我们经常会遇到$LCA$(最近公共祖先)问题。曾经的我遇到这类问题只会$O(n)$暴力求解,学了倍增$LCA$,就可以$O(logn)$解决了。
转载 2018-10-29 15:46:00
101阅读
2评论
倍增算法 【序言】 我认为吧,所有能够优化复杂度的算法都是神奇的,所有能够化繁琐为形象的文字都是伟大的。一直觉得倍增算法是个很神奇的东西,所以决定写点东西纪念一下它。但是作为一个非常不称职的OIER,我非常讨厌别人的算法解析时整版的i,j,k等我看到鼠标就惯性移到右上角的符号语言,所以我想用最形
转载 2017-12-29 09:04:00
85阅读
倍增专题 P1306 斐波那契公约数一个重要性质: g c d ( f [
原创 2022-01-21 09:51:47
62阅读
浅谈倍增 本篇随笔浅谈一下倍增。 一、倍增法的概念 倍增法是一种优化递推枚举的方法。 有的时候递推的状态空间很大。 倍增采取的策略就是,在递推的时候只维护$2^k,k\in Z$的状态。对于其他状态,由于一个数可以被二进制分解成若干个二的整数次幂的和的形式,所以其他的状态就也可以使用已经维护出来的状
转载 2020-10-24 09:56:00
123阅读
2评论
.
转载 16天前
336阅读
倍增选做P1707 刷题比赛构造一个11×1111\times 1111×11​ 矩阵,然后快速幂即可。代码参考题解区#include <cstdio>#include <iostream>#include <cstring>using namespace std;typedef long long ll;ll m, p, q, r, t, u, v, w, x, y, z;struct Matrix { int n, m; ll a[1
原创 2022-01-20 15:52:49
86阅读
这是一个在线算法——这是非常重要的一点,求一次的复杂度是logn 总复杂度为mlogn 个人过的,介绍几题1036 商务旅行 codevs 另外一题难度差不多,只是边上多了一个权值,这时只是dfs稍加改进即可 http://codevs.cn/problem/2370/ 也是codevs上的题,还可
转载 2017-04-27 19:13:00
95阅读
2评论
特点与二分对比 和二分类似,也是加速枚举过程。 不同之处:倍增通常需要预处理一些东西,预处理复杂度高,判断合法性复杂度低。二分则相反。 ST表 ST表是一种很好的反应倍增思想的数据结构,不仅限于维护区间内的最大值,下面例题(坑了半天的紫题)可以很好的体现出这一点。 用一个 f[ i ][ j ] 二 ...
转载 2021-08-12 16:28:00
663阅读
2评论
原帖在这:http://blog.csdn.net/crazy_ac/article/details/7796497LCA可以离线t
原创 2023-07-17 18:14:18
62阅读
树上倍增. dfs序的做法: 思路: 至于代码……额……没写 树上倍增还能够用来求LCA 其中f[i,j]表示i的第2^j祖先dfs预处理f[i,j]=f[f[i,j-1],j-1]; 对于每一对x,y先将深度调成一样再枚举j逐一往上找,这两个过程都是log的 代码如下: #include <ios
原创 2021-08-03 09:36:53
95阅读
const int POW = 18; void dfs(int u,int fa){ d[u]=d[fa]+1; p[u][0]=fa; for(int i=1;i d[b] ) a ^= b, b ^= a, a ^= b; if( d[a] = 0; i-- ) if( p[a][i] != p[b][i] ) a = p[a][i] , b = p[b][i]; a...
原创 2021-08-03 09:19:53
143阅读
一、内容给定一个整数 M,对于任意一个整数集合 S,定义“校验值”如下:从集合 S中取出 M 对数(即 2∗M 个数,不能重复使用集合中的数,如果 S 中的整数不够 M 对,则取到不能取为止),使得“每对数的差的平方”之和最大,这个最大值就称为集合 S的“校验值”。现在给定一个长度为 N的数列 A 以及一个整数 T。我们要把 A分成若干段,使得每一段的“校验值”都不超过 T.求最少需要分...
原创 2021-08-27 14:32:12
162阅读
题目链接:https://www.luogu.org/problemnew/show/P3379 AC代码:
转载 2018-12-01 17:11:00
112阅读
2评论
  1 #include<cstdio> 2 #include<iostream> 3 using namespace std; 4 const int maxn=1e5+10; 5 int n,m,s,num=0,head[maxn],dep[maxn],f[maxn][23]; 6 int a1,a2; 7 struct edg{ 8 int
转载 2020-03-13 12:02:00
94阅读
2评论
浅谈树上倍增 本篇随笔浅谈一下树上倍增。 一、倍增的概念 关于倍增的概念,蒟蒻有专门的博客讲解: 浅谈倍增 二、树上倍增的概念 有人会说,树上倍增也没有递推啊,啥叫树上倍增啊。 树上倍增一般是优化枚举位置。 比如对于一棵树的链上统计操作。对于任意两点间的链路径,暴力统计的话会一个点一个点地遍历,但是
转载 2020-10-24 10:35:00
141阅读
2评论
一、内容给定一个整数 M,对于任意一个整数集合 S,定义“校验值”如下:从集合 S中取出 M 对数(即 2∗M 个数,不能重复使用集合中的数,如果 S 中的整数不够 M 对,则取到不能取为止),使得“每对数的差的平方”之和最大,这个最大值就称为集合 S的“校验值”。现在给定一个长度为 N的数列 A 以及一个整数 T。我们要把 A分成若干段,使得每一段的“校验值”都不超过 T.求最少需要分...
原创 2022-02-03 10:03:10
132阅读
  • 1
  • 2
  • 3
  • 4
  • 5