POJ2891

求解线性同余方程组,模数可能不两两互质,因此需要使用合并方程的方法。 #include <stdio.h> typedef long long int llt; //The extended Euclidean algorithm ...

2018-07-06 13:18:16

阅读数 278

评论数 1

中国剩余定理与线性同余方程组求解

线性同余方程组 中国剩余定理 线性同余方程组 实际上一元一次线性同余方程组,形式如下: ⎧⎩⎨x≡r0(modm0)x≡r1(modm1)⋯{x≡r0(modm0)x≡r1(modm1)⋯ \begin{cases} x\equiv{r_0}({\rm{mod}}\,m_0)...

2018-07-06 13:06:56

阅读数 731

评论数 0

欧几里德算法与扩展的欧几里德算法及乘法逆元

欧几里德算法 扩展的欧几里德算法 数学公式 欧几里德算法 欧几里德算法用于求解最大公倍数,也就是辗转相除法。其结论非常简洁,对任意整数aaa、bbb,有: gcd(a,b)=gcd(b,a%b)gcd(a,b)=gcd(b,a%b)gcd(a,b)=gcd(b,a\...

2018-07-05 23:25:10

阅读数 672

评论数 0

数位DP模板

数位DP问题数位DP指一类问题:给定正整数区间[s, e],问符合条件的数一共有多少个。例如hdu2089以及hdu3555等。 其中,hdu2089的条件为数字中不含4且不含62,hdu3555的条件为数字中包含49。一般而言,这类条件中至少有一个是与整个数的数值无关的,而是与每一位的数字有关...

2017-08-06 11:21:15

阅读数 476

评论数 0

hdu5953 三维空间旋转

题目大意给定若干个3×33\times3的旋转矩阵,对每个矩阵求一个到其他矩阵的最短距离。 两个旋转矩阵的距离做如下定义:对单位球上的任意点PP,经过第一个旋转矩阵的旋转后得到的点为P1P_1,经过第二个旋转矩阵的旋转得到的点为P2P_2,则P1P_1和P2P_2在单位球上有一个距离。对单位球上...

2017-02-09 13:19:38

阅读数 655

评论数 1

树上莫队算法

江湖传闻,莫队算法能够解决一切区间查询问题。这样说来,莫队算法也能够解决一切树上路径查询问题,将树上操作转化为DFS序列上的区间操作即可。当然考虑到,树上路径在DFS序列中的性质,还要会求LCALCA。考虑上图中的树,其DFS序为其任意点对aa、bb之间的路径,具有如下性质,令lcalca为aa、...

2017-01-05 16:25:58

阅读数 2047

评论数 2

树的DFS序

树是一种非线性结构,一般而言,我们总是想办法将其转化为线性结构,将树上操作包括子树操作、路径操作等转化为数组上的区间操作,从而在一个较为理想的复杂度内加以解决。将树“拍平”的方法有很多,例如欧拉序、HLD等。实际上欧拉序也是在DFS过程中得到的。不过通常而言,我们所说的DFS序是指:每个节点进出栈...

2017-01-04 21:58:55

阅读数 2272

评论数 0

莫队算法

莫队算法是一个非常好的算法。最简单的莫队算法用于解决一类序列上无修改只查询的区间问题。经过不同改进后,还可以解决树上路径查询问题,带修改的区间查询问题……总之,莫队算法可以解决一切区间问题。当然,莫队算法还有一个显著特征——莫队算法是一个离线算法。考虑SPOJ3267,给定一个数组,在数组上进行q...

2017-01-03 17:03:07

阅读数 606

评论数 1

树链剖分HLD解决子树问题

树链剖分HLD可以将非线性的树结构转换为由若干条树链构成的数组,并对数组采用线段树等手段,在一个令人比较满意的时间复杂度内完成树上路径操作,包括路径查询和路径修改。实际上,树链剖分也可以完成子树相关的操作,而且只需稍许改进即可。 考虑这样一个树以及剖分出的树链数组,可以非常明显的看到,任意节点及...

2017-01-02 16:21:18

阅读数 743

评论数 0

树链剖分之HLD

树链剖分的原理对于数组这样的线性结构,要在其上实现区间查询(和与最值)、区间修改甚至是区间增删都是有办法的。例如Sparse Table算法、树状数组、线段树以及伸展树等。而树是一种非线性结构,为了高效的实现在树上的路径查询、路径修改操作,基本做法是将树按照某种方式剖成若干条链,再将这些链按照顺序...

2017-01-02 13:51:09

阅读数 833

评论数 0

hdu3483——利用递推公式得到系数矩阵再进行快速幂

系数矩阵的推导过程请看《根据递推公式构造系数矩阵用于快速幂》。import java.util.Scanner;public class Main{ static long [][] C = new long [51][51];//Pascal's triangle stati...

2016-08-16 22:13:33

阅读数 360

评论数 0

根据递推公式构造系数矩阵用于快速幂

简单的例子FibonacciFibonacci数列考虑FibonacciFibonacci数列, F(n)=F(n−1)+F(n−2)F(n)=F(n-1)+F(n-2) 将右边两项看做是一个列向量的形式,令 Xn−1={Fn−1Fn−2}X_{n-1}=\left\{\begin{matr...

2016-08-16 21:51:59

阅读数 2720

评论数 0

自动机初步之NFA及ACM中常见的自动机

NFA也是自动机的一种,与DFA对应。对于DFA来说,在指定状态,经过指定字母,会到达唯一确定的状态。对于NFA而言,在指定状态经过指定字母,到达的是一个状态的集合。换种说法,经过某个字母到达的状态不是唯一确定的,候选集合中的状态都存在可能。特别的,NFA存在ϵ{\epsilon}边,即不需任何字...

2016-08-02 22:09:24

阅读数 1807

评论数 0

自动机初步之DFA

自动机是一种非常有力的工具,其完备的理论可以参考编译原理或者形式语言与自动机等相关教材。从某种定义角度而言,图灵机也是自动机的一种。这里提到的自动机特指有限状态自动机,简称为FA,根据状态转移的性质又分为确定的自动机(DFA)和非确定的自动机(NFA)。FA的表达能力等价于正规表达式或者正规文法。...

2016-08-02 16:12:36

阅读数 3515

评论数 0

伸展树解决区间问题

伸展树解决区间问题的原理 考虑一个序列,从1开始编号,记作A[1...N]A[1...N],在其上实施一些区间操作。例如,将[s,e][s, e]中的数都增加一个deltadelta,查询[s,e][s, e]的所有数的和或者极值,甚至将[s,e][s, e]区间从原序列中删除(之后的数依次前移...

2016-06-04 12:18:14

阅读数 1152

评论数 0

伸展树的节点的size域的应用

伸展树不是平衡二叉树,但是它的操作均摊是O(logNlogN)的,只需要将增、删、查、改的节点都加以伸展即可。因此可以用来解决相关问题。在伸展树的节点上附加一个size域,用来保存以该节点为根的子树的节点总数。这个size域可以用来解决很多问题。例如可以解决区间问题,例如SBT就是用这个size域...

2016-05-30 23:55:14

阅读数 463

评论数 0

旋转体的体积和表面积

积分公式 令曲线y=f(x)y=f(x)绕xx轴旋转,形成的旋转体,则其体积和表面积可以计算积分而得(假设体积和表面积一定存在,积分一定存在,这里不讨论数学问题)。 体积公式为: V=∫πy2dxV={\int}{\pi}{y^2}dx 表面积公式为 S=∫2πy1+y′2−−−−−−√...

2015-09-18 23:01:26

阅读数 6100

评论数 0

POJ1528——因子和

因子和可以参考这里,虽然这道题数据很弱,可以暴力过。但是可以用来练习。注意输入为1时的情况。暴力法#include <cstdio>int proc(int n){ int s = 1; for(int i=2;i<n;++i){ if ( 0 =...

2015-09-10 23:13:23

阅读数 350

评论数 0

POJ1845——A的B次方的因子和

算术基本定理根据算术基本定理,任何一个大于1的自然数n,能够唯一表示为 n=∏ipirin=\prod_i{p_i}^{r_i} 其中,pip_i是n的第ii个质因子。一般将质因子按升序排列,则上述表示形式是唯一的。例如:12=22×3112=2^2\times3^1因子个数nn的所有的因子的...

2015-09-10 22:37:30

阅读数 488

评论数 0

Pollard-Rho方法分解整数因子

对于大整数而言,要找出其因子是比较困难的,事实上仍然没有很好的解决方法。不过在ACM里面有几种“标准的”方法可以使用,例如Pollard-Rho方法。 假设题目是求nn的因子,Pollard-Rho方法的基本思想是任意给定整数yy和xx,求gcd(y−x,n)gcd(y-x,n)。注意,所有运算...

2015-09-10 10:52:28

阅读数 2315

评论数 1

提示
确定要删除当前文章?
取消 删除
关闭
关闭