- 博客(27)
- 收藏
- 关注
转载 tarjan算法大意
Tarjan算法 (以发现者Robert Tarjan命名)是一个在图中寻找强连通分量的算法。算法的基本思想为:任选一结点开始进行深度优先搜索dfs(若深度优先搜索结束后仍有未访问的结点,则再从中任选一点再次进行)。搜索过程中已访问的结点不再访问。搜索树的若干子树构成了图的强连通分量。 应用到咱们要解决的LCA问题上,则是:对于新搜索到的一个结点u,先创建由u构成的集合,再...
2019-09-21 20:27:05
154
转载 序列中的交换问题
一、逆序对系列问题题目:http://poj.org/problem?id=1804题意:给定一个序列a[],每次只允许交换相邻两个数,最少要交换多少次才能把它变成非递降序列.求逆序对的裸题。如果我们交换相邻两个数,我们逆序对的个数只能是+1或-1我们现在需要得到一个非递减数列,即消去所有逆序对,而我们需要最少交换次数,即统计原数组中逆序对个数。对于一个序列中...
2019-09-21 20:27:03
1225
转载 CH Round #57 - Story of the OI Class 凯撒密码
很有意思的一道题目 考场上想的是HASH成一个整数,把末位asicc码值*1,依次乘*10,得到一个整数,然后利用等差性、唯一性快排Nlogn乱搞的 证明如下: 对于明文abcde 密文 bcdef 有(a-b)*10000+(b-c)*1000+(c-d)*100+(d-f)*10+(e-f)*1=一个常数 这个常数我们可以预处理...
2019-09-21 20:27:01
258
转载 浅谈树状数组
还是区间求和区间修改的问题,我们使用线段树解决以后发现编程复杂度比较大 在这里介绍一个简单的数据结构,树状数组。 树状数组的优势是编程复杂度小,常数小,时间复杂度也不错 树状数组的查询,修改,都是LOG(N)级别的 下面来分析一下上面那个图看能得出什么规律: 据图可知:c1=a1,c2=a1+a2,c...
2019-09-21 20:26:59
115
转载 有关Gcd,Lcm的一点小结论
先介绍两个:大数的GcdStein+欧几里德 function stein(a,b:int64):int64;begin if a<b then exit(stein(b,a)); if b=0 then exit(a); if ((a and 1)=0) and ((b and 1)=0) then exit(s...
2019-09-21 20:26:56
196
转载 Baby Step Gaint Step
给定同余式,求它在内的所有解,其中总是素数。分析:解本同余式的步骤如下 (1)求模的一个原根 (2)利用Baby Step Giant Step求出一个,使得,因为为素数,所以有唯一解。 (3)设,这样就有,其中,那么得到。 (4)求出所有的,可以知道一共有个解,我们求出所有的,然后排个序即可。 O(sqrt(n))的时间复杂...
2019-09-21 20:26:54
119
转载 FIB数列
斐波那契级数除以N会出现循环,此周期称为皮萨诺周期。下面给出证明必然会出现循环这是基于下面事实:1.R(n+2)=F(n+2)modP=(F(n+1)+F(n))modP=(F(n+1)modp+F(n)modp)modp2.斐波那契数列的最大公约数定理:gcd(F(m),F(n))=F(gcd(m,n))最大公约数定理表明如果F(k)能被N整除...
2019-09-21 20:26:52
426
转载 CERC 2013 Magical GCD
题目大意如下:给定一个序列,每个序列有值xi,现给定t个数列,对于每个长n的数列,求一段[l,r]使 [r-l+1]*gcd(l,r)最大,gcd(l,r)指的是该连续区间的最大公约数。不难想到n^3,n^2logx,n^2的暴力吧n^3DP,n^2logx暴力枚举,n^2DP可以这样考虑,每次我对于某一个数,保存若干个值,以i为右端点的区间且gcd为某一值的时候这个区...
2019-09-21 20:26:49
188
转载 BZOJ 1023
program bzoj1023;uses math;const inf=1000000000; maxn=50005; maxm=20000005; type edge=record togo,next:longint;end; var n,m,cnt,ind,ans,l,r:longint; la...
2019-09-21 20:26:47
131
转载 BZOJ 1022
program bzoj1022;var t,n,i,ans,k,j,k1,k2:longint; bo:boolean;begin read(t); for k:=1 to t do begin read(n); ans:=0; k2:=0; for i:=1 to n do begi...
2019-09-21 20:26:45
122
转载 Sunday字符串匹配算法
逛ACM神犇的博客的时候看到的这个神奇的算法KMP吧,失配函数难理解,代码量长BF吧,慢,很慢,特别慢。BM吧,我不会写。。。现在看到了Sunday算法呀,眼前一亮,神清气爽啊。字符串匹配算法的效率大概是取决于在发生失配时如何进行下一步的问题。其他咱就不说了。这个Sunday算法在发生失配的时候,跳过了尽可能多的字符。 假设在发生不匹配时S[i]≠T[j...
2019-09-21 20:26:45
134
转载 PASCAL的读入优化
没readkey的情况type Tstring=record s:array[0..maxn] of char; n:longint; end;procedure scan(var S:Tstring);beginS.n:=0; while not seekeoln do with S do begin inc(n); read(s[n]);end; readln...
2019-09-21 20:26:42
155
转载 BZOJ 1018
program bzoj1018;type node=array [0..5] of boolean; pair=array [0..1] of boolean;var tot,c,i,j,k,x1,y1,x2,y2:longint; ans:boolean; ch:char; x,y,z:node; left,right:array...
2019-09-21 20:26:42
111
转载 C(n+m,m) mod p的一类算法
Lucas定理 A、B是非负整数,p是质数。AB写成p进制:A=a[n]a[n-1]...a[0],B=b[n]b[n-1]...b[0]。 则组合数C(A,B)与C(a[n],b[n])*C(a[n-1],b[n-1])*...*C(a[0],b[0])modp同 即:Lucas(n,m,p)=c(n%p,m%p)*Lucas(n/p,m/p,p) 以求解...
2019-09-21 20:26:40
444
转载 BZOJ 1015
program bzoj1015;{$inline on}const maxn=400001;type node=record togo,next:longint;end;var tot,n,m,d,cnt:longint; father,head,q,ans:array [0..maxn] of longint; use...
2019-09-21 20:26:39
146
转载 拓扑序列的最小字典序列
查错考场上又写挂的一道签到题。。。我们发现这题要求得到一个最小字典序列显然找到所有序列然后排序是不可取的,那么我们不能使用平常的拓扑排序方法,怎么搞使得在每次处理拓扑顺序的时候来维护呢?用小根堆维护入度为0的点即可,输入的时候统计入度{$inline on}const maxn=100010;type node=record p...
2019-09-21 20:26:38
443
转载 BZOJ 1828
program bzoj1828;const maxn=100001; check=10000000; type node=record l,r,s,a:longint;end;var t:array [0..maxn*5] of node; a,b,c:array [0..maxn] of longint; n,...
2019-09-21 20:26:37
122
转载 质因数分解的rho以及miller-rabin
一、前言质因数分解,是一个在算法竞赛里老生常谈的经典问题。我们在解决许多问题的时候需要用到质因数分解来辅助运算,而且质因数分解牵扯到许许多多经典高效的算法,例如miller-rabin判断素数算法,rho启发式搜索质因数分解算法等。在此文里,我要介绍的就是miller-rabin算法以及rho启发式搜索分解算法。二、算术基本定理首先,我们得知道,任意一个大于1的自...
2019-09-21 20:26:35
663
转载 费马小定理优化优化多数的乘方
要求a^b^c mod p保证gcd(c,p)=1用费马小定理b:=quick_mod(b,c,p-1);c:=quick_mod(a,b,p);a^c mod p=a^(c mod phi(p)) mod p而素数的phi函数是无需计算的,即p-1推广到多个,依次降幂即可。不断应用快速幂。var a,b,c,p,ans:int64;...
2019-09-21 20:26:35
157
转载 算法竞赛中的数论经典定理
素数定理:记为小于等于的素数个数,那么有定理:设,,那么有定理:设,,那么定理:设,那么的值为(1)为素数,那么答案就是(2)有多个素因子,那么答案就是(3)只有一个素因子,那么答案就是该素因子定理:设为Fib数,那么有定理:给定两个互素的正整数和,那么它们最大不能组合的数为,不能组合的数的个数为定理:...
2019-09-21 20:26:33
106
转载 素数分组 哥德巴赫猜想
题目描述最少把1~n 分成多少组,可以使得每组的数的和为素数输入有多组数据第一行是一个数T,表示数据组数每组数据共1 行,为正整数n输出有T 行,每行为该情况的最少组数,无法分组时,输出-1样例输入12样例输出1哥德巴赫猜想裸题首先如果sum(n)是偶数,即两个素数之和,writ...
2019-09-21 20:26:31
249
转载 构造矩阵来解数列递推问题
转自某大牛。Fibonacci数列:F(0)=1 , F(1)=1 , F(n)=F(n-1)+F(n-2)我们以前快速求Fibonacci数列第n项的方法是 构造常系数矩阵(一) Fibonacci数列f[n]=f[n-1]+f[n-2],f[1]=f[2]=1的第n项快速求法(不考虑高精度)解法:考虑1×2的矩阵【f[n-2],f[n-1]】。根据Fibona...
2019-09-21 20:26:28
574
转载 BZOJ 1096
const maxm=1e100; maxn=1000001; var f,x,p,c,sum,cost:array[0..maxn] of int64; q:array[0..maxn] of longint; n,i,h,t:longint; function calc(j,i:longint):int64; ...
2019-09-21 20:26:26
123
转载 BZOJ 1062
program candy bzoj1062;const maxc=1000100; maxm=4010; maxn=2010;var n,len,m,i,p,t,l,r,c,d,q:longint; s:array[0..1,0..maxn,0..maxm] of longint; x,y:array[0..maxc] of ...
2019-09-21 20:26:24
145
转载 BZOJ 3196
program bzoj3196;const inf=100000000; maxn=200001; maxm=3000001;var n,m,time,temp:longint; root,a:array [0..maxn] of longint; left,right,rnd,v,s,w:array [0..maxm] of l...
2019-09-21 20:26:20
71
转载 BZOJ 1087
var f:array[0..10,0..90,0..600] of int64; a:Array[0..600] of longint; count:array[0..600] of longint; ans:int64; n,m:longint; procedure init;var t,i:longint;begin ...
2019-09-21 20:26:18
102
转载 Pascal 线段树 lazy-tag 模板
先说下我的代码风格(很丑,勿喷) maxn表示最大空间的四倍 tree数组表示求和的线段树 delta表示增减的增量标记 sign表示覆盖的标记 delta,sign实际上都是lazy标志 pushdown表示标记下传 pushup表示标记上传(即求和,区间最值) update表示数据更新 ...
2019-09-21 20:26:15
191
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人