acm算法
文章平均质量分 72
Cross_yan
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Floyd算法
详细讲解:http://www.cnblogs.com/skywang12345/Floyd算法(二)之 C++详解例题:题目来源http://acm.hdu.edu.cn/showproblem.php?pid=2544Problem Description在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员原创 2017-07-20 09:56:15 · 271 阅读 · 0 评论 -
C++ set
set容器所包含的元素的值是唯一的,集合中的元素默认按照从小到大的顺序排列我们构造set集合的目的是为了快速的检索,不可直接去修改键值set的一些常见操作:begin() 返回指向第一个元素的迭代器end() 返回指向最后一个元素之后的迭代器,不是最后一个元素insert(value) 在集合中插入元素erase(value) 删除集合中的元素set原创 2017-07-29 17:01:12 · 756 阅读 · 0 评论 -
Prime算法
http://www.61mon.com/index.php/archives/199/转载 2017-08-10 15:00:11 · 304 阅读 · 0 评论 -
求解区间最值 - RMQ - ST 算法
解析ST 算法是 RMQ(Range Minimum/Maximum Query)中一个很经典的算法,它天生用来求得一个区间的最值,但却不能维护最值,也就是说,过程中不能改变区间中的某个元素的值。O(nlogn) 的预处理和 O(1) 的查询对于需要大量询问的场景是非常适用的。接下来我们就来详细了解下 ST 算法的处理过程。比如有如下长度为 10 的数组:复制代码1 3 2转载 2017-07-26 17:27:20 · 286 阅读 · 0 评论 -
插板法(排列组合)
转自(http://www.cnblogs.com/justPassBy/p/4600772.html)插板法的条件()(1)每个元素都是相同的(2)分成的组,每组的元素不为空就比如下面这个例子,分出来的组的元素是不为空的 原始问题:将10个相同的球放到3个不同的篮子里面去,每个篮子至少一个,问有多少种放法0-0-0-0-转载 2017-08-18 11:21:15 · 5662 阅读 · 0 评论 -
SPFA算法
http://www.61mon.com/index.php/archives/196/转载 2017-08-11 16:01:43 · 214 阅读 · 0 评论 -
单源最短路径——Dijkstra算法,Bellman-Ford算法,SPFA算法
http://www.61mon.com/index.php/archives/200/转载 2017-08-12 15:48:19 · 389 阅读 · 0 评论 -
阶乘取余打表,阶乘逆元打表
const long long mod=1000000007;const int maxn=100000;typedef long long LL;LL fac[maxn+9],inv_fac[maxn];LL quickpow(LL x,LL n){ LL res=1; x=x%mod; while(n) { if(n%2==1)res=(re原创 2017-08-19 16:38:34 · 1562 阅读 · 0 评论 -
已排序数组二分查找
刘汝佳 紫书提供方法://正确答案在[x,y)区间之内,即不会包括y。//这种方法老是两个细节搞不顺,如下标注int bsearch(int* a, int x,int y,int test){ int m; while(x<y) //1.这里判断条件为什么不是x<=y(因为不包括y,所以x==y时就说明区间内没有正确答案了 { ...原创 2018-03-10 19:18:17 · 675 阅读 · 0 评论 -
Train Problem I CSU-ACM2017暑期训练1-Debug与STL
#include#include#include#include#includeusing namespace std;vector pos_store[30];bool vst[89],allvst[89];int main(){ string str; while(cin>>str) { if(str=="*")原创 2017-07-24 12:03:01 · 204 阅读 · 0 评论 -
欧几里得算法求GCD 递归
int gcd(int x,int y)//原始值x,y!=0{ if(y==0) return x; return gcd(y,x%y);}原创 2017-07-23 10:38:27 · 892 阅读 · 0 评论 -
汉诺塔问题
约19世纪末,在欧洲的商店中出售一种智力玩具,在一块铜板上有三根杆,最左边的杆上自上而下、由小到大顺序串着由64个圆盘构成的塔,游戏的目的是将最左边杆上的盘全部移到最右边的杆上,条件是一次仅能移动一个盘,且不允许大盘放在小盘上面。递推打表:a[n]=2*a[n-1]+1;移动一个盘子:a[1]=1;移动两个盘子:a[2]=1*2+1;移动三个盘子:a[3]=a[2]*2原创 2017-07-22 22:02:13 · 977 阅读 · 0 评论 -
Dijkstra算法
算法详解:Dijkstra算法(二)之 C++详解实例代码://// 6 9// 1 2 1// 1 3 12// 2 3 9// 2 4 3// 3 5 5// 4 3 4// 4 5 13// 4 6 15// 5 6 4#include#include#define inf 99999原创 2017-07-20 11:07:09 · 242 阅读 · 0 评论 -
Bellman-Ford算法
转载链接:http://blog.youkuaiyun.com/niushuai666/article/details/6791765Dijkstra算法是处理单源最短路径的有效算法,但它局限于边的权值非负的情况,若图中出现权值为负的边,Dijkstra算法就会失效,求出的最短路径就可能是错的。这时候,就需要使用其他的算法来求解最短路径,Bellman-Ford算法就是其中最常用的一个。该转载 2017-07-20 15:19:55 · 246 阅读 · 0 评论 -
深度优先搜索(DFS)
深度优先搜索(DFS)【算法入门】郭志伟@SYSU:raphealguo(at)qq.com2012/05/121.前言深度优先搜索(缩写DFS)有点类似广度优先搜索,也是对一个连通图进行遍历的算法。它的思想是从一个顶点V0开始,沿着一条路一直走到底,如果发现不能到达目标解,那就返回到上一个节点,然后从另一条路开始走到底,这种尽量往深处走的概念即是深度优先的概念。你可以跳过第二节先看第三转载 2017-07-29 14:40:12 · 310 阅读 · 0 评论 -
快速求多项式值
第二种时间复杂度仅为O(n)!!!!!转载 2017-07-31 09:10:36 · 1196 阅读 · 0 评论 -
图的存储结构之邻接表
对于图来说,邻接矩阵是不错的一种图存储结构,但是我们也发现,对于边数相对顶点较少的图,这种结构是存在对存储空间的极大浪费的。因此我们考虑另外一种存储结构方式:邻接表(Adjacency List),即数组与链表相结合的存储方法。邻接表的处理方法是这样的。1、图中顶点用一个一维数组存储,另外,对于顶点数组中,每个数据元素还需要存储指向第一个邻接点的指针,以便于查找该顶点的边信息。转载 2017-07-29 15:11:54 · 389 阅读 · 0 评论 -
判断质数 O(n)复杂度打表
#include#include#include#includeusing namespace std;int table[1000009];void print_table2()//table[i]==0,i为质数{ int x=sqrt(1000010)+1; for(int p=2;p<=x;p++) { if(table[p]!=0原创 2017-07-21 21:10:53 · 997 阅读 · 0 评论 -
数论倒数——逆元
数论倒数,又称逆元(因为我说习惯逆元了,下面我都说逆元)数论中的倒数是有特别的意义滴你以为a的倒数在数论中还是1/a吗(・∀・)哼哼~天真 先来引入求余概念 (a + b) % p = (a%p + b%p) %p (对)(a - b) % p = (a%p - b%p) %p (对)(a * b) % p = (a%p * b%p) %p (对)(a转载 2017-07-22 11:29:11 · 1271 阅读 · 0 评论 -
快速幂取模
所谓的快速幂,实际上是快速幂取模的缩写,简单的说,就是快速的求一个幂式的模(余)。在程序设计过程中,经常要去求一些大数对于某个数的余数,为了得到更快、计算范围更大的算法,产生了快速幂取模算法。我们先从简单的例子入手:求abmodc算法1.直接设计这个算法:int ans = 1;for(int i = 1;i<=b;i++){ ans = ans * a;}ans = ans % c转载 2017-07-22 17:19:37 · 628 阅读 · 0 评论 -
L1-006. 连续因子
一个正整数N的因子中可能存在若干连续的数字。例如630可以分解为3*5*6*7,其中5、6、7就是3个连续的数字。给定任一正整数N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。输入格式:输入在一行中给出一个正整数N(1<N<231)。输出格式:首先在第1行输出最长连续因子的个数;然后在第2行中按“因子1*因子2*……*因子k”的格...原创 2018-03-10 20:52:03 · 420 阅读 · 0 评论
分享