![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
常用算法代码
文章平均质量分 77
三江小渡
这个作者很懒,什么都没留下…
展开
-
求n^m 时间复杂度log(m)的算法
非常好用,在此先分享给大家~求n^m 时间复杂度log(m)int calc(int n,int m){ int re=1; while(m){ if(m&1) re*=n; n*=n; m>>=1; } return re;}求矩阵[n]^m 时间复杂度log(m)#include#includeusing namespace std;#define N 2#d原创 2011-01-10 00:34:00 · 1988 阅读 · 0 评论 -
归并排序模板 && 求逆序数
<br />#include<stdio.h>#include<stdlib.h>//归并排序模板typedef int ElementType;int ans;void Merge(ElementType A[], ElementType TmpArray[], int Lpos, int Rpos, int RightEnd){ int i , LeftEnd, NumElements, TmpPos; LeftEnd = Rpos - 1; TmpPos = Lpo原创 2011-04-21 09:38:00 · 511 阅读 · 0 评论 -
【POJ2188】Cow Laundry (归并排序,逆序数)
<br />依旧是利用归并模板。。。这里解释下题意:<br />牛们手短,每次只能移动上边或者下边相邻的一根线。<br />输入的数据是第一行是1号挂钩上下分别链接的线的编号,<br />第二行是二号钩上下分别链接的线的编号。<br />……<br />最后你需要你把错乱的线理顺就行了。。。<br />#include<stdio.h>#include<stdlib.h>using namespace std;//归并排序模板typedef int ElementType;int ans原创 2011-04-21 10:29:00 · 1197 阅读 · 0 评论 -
POJ 3660 && NYIST 211 Cow Contest && ZOJ 1060 Sorting It All Out【Floyd算法扩展应用】
Floyd算法:Floyd算法又称为弗洛伊德算法,插点法,是一种用于寻找给定的加权图中顶点间最短路径的算法(百度百科给的。。。)。 核心思路 通过一个图的权值矩阵求出它的每两点间的最短路径矩阵。 从图的带权邻接矩阵A=[a(i,j)] n×n开始,递归地进行n次更新,即由矩阵D(0)=A,按一个公式,构造出矩阵D(1);又用同样地公式由D(1)构造出D(2);……;最后又用同样的公式由D(n-1)构造出矩阵D(n)。矩阵D(n)的i行j列元素便是i号顶点到j号顶点的最短路径长度,称D(n)为图的距离矩原创 2011-03-30 14:35:00 · 576 阅读 · 0 评论 -
POJ 1861 Network [最小生成树算法MST-kruskal 数据结构-并查集 union-find sets]
跟这个prim算法最小生成树http://blog.csdn.net/hzyhouzhiyuan/archive/2011/01/23/6159382.aspx,两个算法,邻接矩阵存图时,prim适用于稠密图,kruskal适于用稀疏图。代码还是比较清晰明了的,不再赘述了……#include #include #includeusing namespace std;const int MAXSIZE = 1050; int rank[MAXSIZE]; // 节点高度的上界原创 2011-03-28 17:31:00 · 862 阅读 · 0 评论 -
并查集模板
来自Lifeng Wang http://hi.baidu.com/fandywang_jlu前辈06年写的东西,追随前人足迹继续努力。//Abstract: UFSet //Author:Lifeng Wang (Fandywang)// Model One 与Model 2 路径压缩方式不同,合并标准不同const int MAXSIZE = 500010;int rank[MAXSIZE]; // 节点高度的上界int parent[MAXSI原创 2011-03-23 15:54:00 · 977 阅读 · 0 评论 -
POJ3349 Snowflake Snow Snowflakes 自己写个哈希模板
http://acm.nyist.net/JudgeOnline/problem.php?pid=130很悲剧,只能说悲剧,花了一个下午思考一个模板,想着能经常用来着,结果第一次用POJ上一直TLE。。。汗死。最重要的是自己机器上测试十万组数据十分的快,只有0.7秒左右。。。然后就在NYOJ上提交,过了……这就浪费1天时间,悲剧。如果有幸有高人看到,一定请指正#include #include #include using namespace std;#define hashPrime 14原创 2011-03-18 12:31:00 · 546 阅读 · 0 评论 -
存下十万(100000)以内的所有素数,方便以后打表或者哈希使用,另附筛法
#include #includeusing namespace std;bool vis[10000100];int main(){ freopen("2.txt","w",stdout); int n=10000100; int m =sqrt(n+0.5); int c=0; for(int i =2;i原创 2011-03-16 20:39:00 · 3241 阅读 · 0 评论 -
NYOJ69 大数阶乘数位长度
<br />/* NYOJ69 阶乘数位长度 * 方法一: * 可设想n!的结果是不大于的M次幂的数,即n!<=10^M(10的M次方),则不小于M的最小整数就是n!的位数,对 * 该式两边取对数,有M =log10^n! 即:M = log10^1+log10^2+log10^3...+log10^n 循环求和,就能算得M值, * 该M是n!的精确位数。当n比较大的时候,这种方法方法需要花费很多的时间。 * * 方法二: * 利用斯特林(Stirling)公式的进行求解。下面原创 2011-01-10 00:49:00 · 941 阅读 · 0 评论 -
【POJ1887 || 2355 || 1631】Testing the CATCHER(最长递增(递减)子序列)NYOJ224
题目说的很长,但是最后求的就是最长递减子序列。。。好吧 刷水题。。。#include #include #include using namespace std;int arr[100010];int main(){ freopen("1.txt","r",stdin); int n,j,i,num=1; while(scanf("%d",&arr[0])!=EOF){ if(arr[0]==-1) break; int count=0; i=1; w原创 2011-04-22 16:37:00 · 641 阅读 · 0 评论