- 博客(22)
- 收藏
- 关注
原创 HDU - 4455 (DP)
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4455XXX has an array of length n. XXX wants to know that, for a given w, what is the sum of the distinct elements’ number in all substrings of lengt
2017-10-23 21:31:12 1166
原创 HDU - 4495 (字符串哈希+二分+DP)
传送门:点击打开链接Given a rectangle which contains N rows and each of them contains a string length of M. You must find out a symmetrical isosceles right triangle (with two equal edges and a right ang
2017-10-23 13:33:44 495
原创 Vision_数据结构_线段树
///定义:/* 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O(logN)。而未优化的空间复杂度为2N,实际应用时一般还要开4N的数组以免越界,因此有时需要离散化让空间压缩。*////代码:/***name:一维线段树*
2017-10-19 15:26:45 370
原创 Vision_MATH_高精度
/***name:高精度**function:大数运算**题意:求n的阶乘*/#includeusing namespace std;struct BigInt{ const static int mod = 10000; const static int DLEN = 4; int a[10000],len; BigInt() {
2017-10-19 15:05:21 235
原创 Vision_MATH_三分查找
///定义:/* 在二分查找的基础上,在右区间(或左区间)再进行一次二分,这样的查找算法称为三分查找,也就是三分法。三分查找通常用来迅速确定最值。*////代码:/***name:三分查找**function:凸性函数中找最值*/int SanFen(int l,int r){///找凸点 while(l<r-1){ int m
2017-10-19 14:26:23 315
原创 Vision_MATH_逆元
///定义:/* 逆元素是指一个可以取消另一给定元素运算的元素,在数学里,逆元素广义化了加法中的加法逆元和乘法中的倒数。在这里指的是模数运算中的逆元即:a/b%c=a*(b的逆元)%c*////代码:/***name:扩展欧几里得求逆元**function:求逆元**输入参数:a**输出参数:a的逆元**推导过程:a*x ≡ 1 (mod p),其中x就是
2017-10-19 14:08:33 280
原创 Vision_MATH_快速幂||矩阵快速幂
///定义:/* 快速幂就是快速算底数的n次幂。其时间复杂度为 O(logN), 与朴素的O(N)相比效率有了极大的提高。 也就是求A^B%mod的值,其中A可以是数字也可以是矩阵(矩阵快速幂)*////代码:/***name:快速幂**function:求解a^b%mod的值(mod*mod不会爆long long的情况)**输入参数:a,b,m
2017-10-19 13:44:45 340
原创 Vision_MATH_中国剩余定理
///定义:/* 中国剩余定理给出了以下的一元线性同余方程组: x ≡ a1 (mod m1) x ≡ a2 (mod m2) x ≡ a3 (mod m3) x ≡ a4 (mod m4) * * * x ≡ ak (mod mk)*////代码:/***n
2017-10-17 14:02:02 339
原创 Vision_MATH_(扩展)欧几里得
///定义:/* 扩展欧几里德算法是用来在已知a, b求解一组x,y,使它们满足贝祖等式: ax+by = gcd(a, b) =d(解一定存在,根据数论中的相关定理)。扩展欧几里德常用在求解模线性方程及方程组中。*////代码:/***name:欧几里得算法(辗转相除法)**functuion:求gcd(a,b)*/int gcd(int a,int
2017-10-16 13:18:54 264
原创 Vision_数据结构_并查集
///定义:/* 并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。 集就是让每个元素构成一个单元素的集合,也就是按一定顺序将属于同一组的元素所在的集合合并。*////代码:/***name:并查集**function:合并查找分类(连通分量的个数)*/#includeu
2017-10-16 12:38:29 295
原创 Vision_MATH_SG函数
///定义:/* 概念:给定一个有向无环图和一个起始顶点上的一枚棋子,两名选手交替的将这枚棋子沿有向边进行移动,无法移 动者判负。事实上,这个游戏可以认为是所有Impartial Combinatorial Games的抽象模型。也就是说,任何一个ICG都可以通过把每个局面看成一个顶点,对每个局面和它的子局面连一条有向边来抽象成这个“有向图游戏”。下 面我们就在有向无环图
2017-10-13 21:37:48 302
原创 Vision_字符串_字符串哈希(BKDR Hash)
///定义:/* 将一个字符串哈希成一个数值,使得这些数值的冲突尽量的小。 最直白的是sum = s[0] + s[1] + ... + s[len],其中sum就是s的哈希值。*////代码:/***name:BKDR Hash**来源:官方模板*/unsigned int BKDRHash(char *str){ unsigned i
2017-10-10 11:01:41 464
原创 Vision_字符串_KMP
///定义:/* KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和 V.R.Pratt同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP 算法)。KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹 配次数以达到快速匹配的目的。具体实现就是实现一个next()函数,函数本身包含
2017-10-10 10:21:21 270
原创 HDU - 4416 ——Good Article Good sentence (后缀树组)
传送门:http://acm.split.hdu.edu.cn/showproblem.php?pid=4416In middle school, teachers used to encourage us to pick up pretty sentences so that we could apply those sentences in our own articles. On
2017-10-09 19:24:31 533
原创 Vision_字符串_AC自动机
///定义:/* (1)AC自动机简介: 首先简要介绍一下AC自动机:Aho-Corasick automation, 该算法在1975年产生于贝尔实验室,是著名的多模匹配算法之一。 一个常见的例子就是给出n个单词,再给出一段包含m个字符的文章, 让你找出有多少个单词在文章里出现过。要搞懂AC自动机,先得有字 典树Trie和K
2017-10-07 12:40:03 493
原创 Vision_数据结构_拓扑排序
///定义:/* 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序, 是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边 (u,v)∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称 为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,
2017-10-07 11:54:15 283
原创 Vision_数据结构_舞蹈连
///定义(ctrl+c):/* (1)历史: X算法是高德纳提出的解决精确覆盖问题的算法,而dancing links X算法则是DonKnuth(《计算机程序设计艺术》 的作者)提出的对X算法的一种高效实现,这种实现建立在如上所说的矩阵表示法上。 (2)算法思想: 由如上精确覆盖问题的矩阵表示法中,我们知道d
2017-10-06 16:02:57 336
原创 Vision_MATH_Lucas定理及扩展
///定义:/* Lucas定理: (1)求解C(n,m)%p, n和m是非负整数,p是质数. (2)结论1. Lucas(n,m,p)=c(n%p,m%p)*Lucas(n/p,m/p,p); (3)结论2. 把n写成p进制a[n]a[n-1]a[n-2]...a[0],把m写成p进制b[n]b[n-1]b[n-2]...b[0
2017-10-06 13:03:23 252
原创 Vision_MATH_球盒问题+第二类Stirling数
///定义:/* 排列组合解决球盒的八大问题,其中用到排列组合公式和第二类斯特林公式*////代码:/***name:第二类斯特林数(第二类Stirling数)**function:解决求不同盒同等问题**公式: S(r, c) = S(r-1,c-1) + c * S(r-1, c)*/#include #include #include #in
2017-10-05 14:54:11 487
原创 Vision_字符串_最小(大)表示法
///定义:/* 求解问题:n个字符串围成一个环,请从这个环中找出字典序最大(或最小)的长度为n的字符串(下标尽可能小)*////代码:/***name:最小表示法**function:求解循环字符串的最小字典序串**输入参数:字符串+字符串长度**输出参数:从某下标开始所得到的串字典序最小&&下标最小**复杂度:O(n)*/#include#incl
2017-10-05 13:53:30 281
原创 Vision_数据结构_RMQ
///定义:/* RMQ算法,是一个快速求区间最值的离线算法, 预处理时间复杂度O(n*log(n)),查询O(1),所以是一个很快速的算法, 当然这个问题用线段树同样能够解决。*////代码:/***name:RMQ**function:求区间最值**输入参数:区间左右边界**输出参数:返回最值**复杂度:O(n*
2017-10-02 11:21:50 243
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人