随笔分类 - algorithm
变量交换
摘要:变量交换交换变量有很多种方法,一般分为两类,借助第三个变量和不借助第三个变量两种方式.对于ACMer 来说,下面的代码无疑是最优的。1 int main()2 {3 int a , b;4 cin >> a >> b;5 cout 2 3 int main() 4 { 5...
阅读全文
模板 线段相交
摘要:【模板】线段相交 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 struct point 7 { 8 double x,y; 9 };10 point a[105][2];//a[i][0]代...
阅读全文
模板 高精度计算
摘要:【模板】高精度计算大数相加: 1 #include 2 #include 3 #include 4 5 void add(char a[],char b[],char back[]) 6 { 7 int i,j,k,up,x,y,z,l; 8 char *c; 9 i...
阅读全文
模板 快速幂取模
摘要:【模板】快速幂取模 1 long long quickmod(long long a,long long b,long long m) 2 { 3 long long ans = 1; 4 while(b)//用一个循环从右到左便利b的所有二进制位 5 { 6 ...
阅读全文
模板 二分
摘要:【模板】二分 1 int binsearch(int *t,int k,int n) 2 { 3 //t为数组,k是要查找的数,n为长度,此为升序 4 5 int low = 1,high = n,mid; 6 7 while(low<=high) 8 { 9 ...
阅读全文
模板 排序
摘要:【模板】排序 1 //sort 2 #include 3 bool cmp(const int a,const int b) 4 { 5 return a>b;//降序排列 6 } 7 8 //qsort 9 #include 10 int cmp(const void *x,const ...
阅读全文
模板 KMP
摘要:【模板】KMP 1 int next[N]; 2 char str1[M],str2[N]; 3 //str1 长,str2 短 4 //len1,len2,对应str1,str2的长 5 6 void get_next(int len2) 7 { 8 int i = 0,...
阅读全文
模板 并查集
摘要:【模板】并查集 1 int find(int x) 2 { 3 int r = x; 4 while(father[r]!=r) 5 r = father[r]; 6 return r; 7 } 8 /* 9 int find(int x)10 {11 if(...
阅读全文
模板 各种欧几里得
摘要:【模板】各种欧几里得 1 //a > b 2 int gcd(int a , int b) 3 { 4 return b ? gcd( b , a % b ) : a ; 5 } 6 7 int lcm(int a , int b) 8 { 9 return a / gcd( a ...
阅读全文
模板 素数筛选
摘要:【模板】素数筛选 1 #include 2 3 int main() 4 { 5 int i,j,a[505]={0}; 6 for(i=1;i<=500;i++) 7 a[i]=1; 8 for(i=2;i<=500;i++) 9 if(...
阅读全文
模板 最长公共递增子序列
摘要:【模板】最长递增公共子序列二维 1 #include 2 #include 3 #include 4 using namespace std; 5 6 int n,m,a[505],b[505],dp[505][505]; 7 8 int LICS() 9 {10 int MAX,...
阅读全文
树的Prufer 编码和最小生成树计数
摘要:Prufer数列 Prufer数列是无根树的一种数列。在组合数学中,Prufer数列由有一个对于顶点标过号的树转化来的数列,点数为n的树转化来的Prufer数列长度为n-2。它可以通过简单的迭代方法计算出来。它由Heinz Prufer于1918年在证明cayley定理时首次提出。目录1将树转化成...
阅读全文
zjuoj 3604 Tunnel Network
摘要:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3604Tunnel NetworkTime Limit:2 Seconds Memory Limit:65536 KBCountry Far-Far-Away is a big...
阅读全文
数论模板
摘要://求gcd(a,b)LLgcd(LLa,LLb){returnb?gcd(b,a%b):a;}//求整数x和y,使得ax+by=d,且|x|+|y|最小。其中d=gcd(a,b)voidgcd(LLa,LLb,LL&d,LL&x,LL&y){if(!b){d=a;x=1;y=0;}else{gcd...
阅读全文
STL之容器(1)
摘要:STL容器类的模板容器部分主要由头文件,,,,,和组成。对于常用的一些容器和容器适配器(可以看作由其它容器实现的容器),可以通过下表总结一下它们和相应头文件的对应关系。数据结构描述实现头文件向量(vector)连续存储的元素列表(list)由节点组成的双向链表,每个结点包含着一个元素双队列(dequ...
阅读全文
STL之优先队列(1)
摘要:优先队列用法在优先队列中,优先级高的元素先出队列。标准库默认使用元素类型的qi;通过,greater>qi2;//从小到大的优先级队列可将greater改为less即为从大到小其中 第一个参数为容器类型。 第二个参数为比较函数。故示例2中输出结果为:23569第三种用法: 自定义优先级。struc...
阅读全文
sort 树 hash 排序
摘要:STL中sort函数用法简介做ACM题的时候,排序是一种经常要用到的操作。如果每次都自己写个冒泡之类的O(n^2)排序,不但程序容易超时,而且浪费宝贵的比赛时间,还很有可能写错。STL里面有个sort函数,可以直接对数组排序,复杂度为n*log2(n)。使用这个函数,需要包含头文件#include。...
阅读全文
快速幂 蒙格马利算法
摘要:快速求幂约定:x%y为x取模y,即x除以y所得的余数,当x1){//一直计算,直到指数小于或等于1if((p%2)!=0){//如果指数p是奇数,则说明计算后会剩一个多余的数,那么在这里把它乘到结果中odd*=main;//把“剩下的”乘起来}main*=main;//主体乘方p/=2;//指数除以...
阅读全文
背包九讲 附:USACO中的背包问题
摘要:附:USACO中的背包问题USACO是USAComputingOlympiad的简称,它组织了很多面向全球的计算机竞赛活动。USACOTrainng是一个很适合初学者的题库,我认为它的特色是题目质量高,循序渐进,还配有不错的课文和题目分析。其中关于背包问题的那篇课文(TEXTKnapsackProb...
阅读全文
背包九讲(9)
摘要:P09:背包问题问法的变化以上涉及的各种背包问题都是要求在背包容量(费用)的限制下求可以取到的最大价值,但背包问题还有很多种灵活的问法,在这里值得提一下。但是我认为,只要深入理解了求背包问题最大价值的方法,即使问法变化了,也是不难想出算法的。例如,求解最多可以放多少件物品或者最多可以装满多少背包的空...
阅读全文