ACM_模板
Tovi-A
用勇气改变可以改变的事情,用胸怀接受不能改变的事情,用智慧分辨两者的不同。
展开
-
ACM_素数筛选
/**素数筛法,判断小于MAXN的数是不是素数。*notprime是一张表,为false表示是素数,true表示不是素数 */const int MAXN = 1000010;bool notprime[MAXN]; //值为false表示素数,值为true表示非素数void init() { memset(notprime, false, sizeof(notprime));原创 2015-09-29 12:20:32 · 421 阅读 · 0 评论 -
整数转换为字符串
#include //反转字符串 char *reverse(char *s) { char temp; char *p = s; //p指向s的头部 char *q = s; //q指向s的尾部 while(*q) ++q; q--; //交换移动指针,直到p和q交叉原创 2015-12-10 11:36:30 · 798 阅读 · 0 评论 -
poj1258prim算法
/*poj 1258 *题意:有若干个农场,现需要将各个农场用光纤连接起来,各个农场之间连接的光纤长度也许不同, *要求求出使得将所有农场连接起来的最短光线长度 *算法分析:使用矩阵将各个农场之间的光线长度存储起来、然后使用prim算法 */#include #include #define MaxInt 0x3f3f3f3f#define N 110//创建map二维数组原创 2015-10-31 11:18:19 · 468 阅读 · 0 评论 -
大区间素数筛选(POJ 2689)
/* *POJ 2689 Prime Distance *给出一个区间[L,U],找出区间内容、相邻的距离最近的两个素数和距离最远的两个素数 *1<=L<U<=2147483647 区间长度不超过1000000、就是要筛选出[L,U]之间的素数 */#include #include #include #include #include #include #include原创 2015-10-28 13:00:38 · 625 阅读 · 0 评论 -
克鲁斯卡尔(Kruskal)算法求最小生成树
/* *Kruskal算法求MST */#include #include #include #include #include #include #include #include #include using namespace std;const int MAXN = 110; //最大点数 const int MAXM = 10000; //原创 2015-11-12 14:29:32 · 694 阅读 · 0 评论 -
ACM_高次同余方程
/*poj 3243 *解决高次同余方程的应用,已知 X^Y = K mod Z, 及X,Z,K的值,求 Y 的值 */#include #include #include using namespace std; #define lint __int64 #define MAXN 131071 struct HashNode { lint data, id, n原创 2015-11-07 10:40:41 · 660 阅读 · 0 评论 -
ACM_扩展欧几里德算法
/* 扩展欧几里德算法基本算法:对于不完全为 0 的非负整数 a,b,gcd(a,b)表示 a,b 的最大公约数,必然存在整数对 x,y ,使得 gcd(a,b)=ax+by。证明:设 a>b。 1,显然当 b=0,gcd(a,b)=a。此时 x=1,y=0; 2,ab!=0 时 设 ax1+by1=gcd(a,b); bx2+(a mod b)y2=gcd(b,原创 2015-11-06 14:40:29 · 585 阅读 · 0 评论 -
最长子序列
/*在做OJ题目的时候,经常会用到字符串的处理。例如,比较二个字符串相似度。这篇文章介绍一下求两个字符串的最长公共子序列。 一个字符串的子序列,是指从该字符串中去掉任意多个字符后剩下的字符在不改变顺序的情况下组成的新字符串。 最长公共子序列,是指多个字符串可具有的长度最大的公共的子序列。*/#include#includechar a[500],b[500];char n原创 2015-10-04 14:53:55 · 407 阅读 · 0 评论 -
ACM_并查集
//题意:ignatius过生日,客人来到,他想知道他需要准备多少张桌子。然而一张桌子上面只能坐上相互熟悉的人, //其中熟悉可定义成为A与B认识,B与C认识,我们就说A,B,C相互熟悉 。例如A与B熟悉and B与C熟悉,D与E熟悉,此时至少需要两张桌子。//输入:t表示样例个数,n表示朋友个数,朋友从1到n编号,m表示已知相互了解的对数,接着m行。每行表示相互熟悉的编号//输出:至少需原创 2015-10-04 14:59:52 · 425 阅读 · 0 评论 -
SPFA模板
/* SPFA求单源最短路径长度 时间复杂度O(KE) */#include using namespace std; const int maxn=300001; const int inf =0x7ffffff; struct edge { int from,to,w,next; }e[1000001]; int head[maxn]; i原创 2016-11-04 17:40:08 · 406 阅读 · 0 评论