模板
文章平均质量分 75
laserss
laserss@qq.com
展开
-
扩展欧几里德
在辗转相除gcd(a,b)的基础上加以扩展可以得到使等式 a*x+b*y=1 成立的解#includeusing namespace std;int x,y;int gcd(int a, int b){ return b == 0 ? a : gcd(b, a % b);}int exgcd(int a,int b,int &x,int &y){原创 2012-08-18 17:14:23 · 798 阅读 · 0 评论 -
hdu2586 LCA模板
hdu2586先预处理然后是 在线询问 (也就是一边读入一边查询)#pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #include using namespace std;#define maxn 400010int n;struct Nod原创 2012-12-06 17:27:26 · 4593 阅读 · 1 评论 -
hdu1558并查集+线段相交
hdu1558关于线段相交的内容参考算法导论P577#include#include#includeusing namespace std;int pre[1010],sum[1010];struct point{ double x,y;};struct EDGE{ point a,b;} edge[1010];int E;//边数 int Fi原创 2012-12-03 11:33:44 · 1479 阅读 · 0 评论 -
fzu2015vote 组合 逆元
fzu2015http://fayaa.com/code/view/27362/raw/#include#includeusing namespace std;__int64 jc[210],mod=1000000007;__int64 exgcd(__int64 a,__int64 b,__int64 &x,__int64 &y){ if(b==0) return原创 2012-12-02 15:37:24 · 796 阅读 · 0 评论 -
数论笔记
欧几里德算法概述: 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理: gcd函数就是用来求(a,b)的最大公约数的。 gcd函数的基本性质: gcd(a,b)=gcd(b,a)=gcd(-a,b)=gcd(|a|,|b|)欧几里得算法的公式表述 gcd(a,b)=gcd(b,a mod b) 证明:a可以表示成a = kb + r原创 2012-11-30 17:57:37 · 1894 阅读 · 0 评论 -
hdu3037Saving Beans lucas定理
hdu3037lucas 对组合数取模lucas(n,m)=C(n%mod,m%mod)*lucas(n/mod,m/mod)%mod;lucas(n,0)=1;#include#includeusing namespace std;__int64 jc[100010];__int64 exgcd(__int64 a,__int64 b,__int64原创 2012-12-02 17:23:28 · 1095 阅读 · 0 评论 -
hdu1358 KMP-next数组的应用
hdu1358next数组贮存的是String中前i位字符 最长相同的前后缀长度+1。i-next[i] 则表示前i 位中循环节的长度#include#includeusing namespace std;char T[1000010];int next[1000010];int N,M;void GetNext(){ int i=1,j=0; n原创 2012-11-16 12:52:55 · 961 阅读 · 0 评论 -
hdu4135 互斥+容斥原理
hdu4135网上学到到的递归写法#include#include#includeusing namespace std;int fac[20];void Init(int m){ int i,n=0; for(i=2;i*i<=m;i++) if(m%i==0){ fac[++n]=i; while原创 2012-11-29 16:31:40 · 1937 阅读 · 0 评论 -
上界,下界,二分查找
直接上代码了有注释//Author: laserss//Time : 2012/11/14//email : dellaser@163.com#include#include#include#includeusing namespace std;int bsearch(int A[],int size,int x) //二分查找 { i原创 2012-11-14 20:45:43 · 2931 阅读 · 2 评论 -
hdu1711 KMP模板
hdu1711在大话数据结构上看到的代码。貌似效率不是很高 提交页面用时比这个少的一大堆#include#includeusing namespace std;int S[1000010],T[10010],next[10010],N,M;void GetNext(){ int i=1,j=0; next[1]=0; while(i<M) {原创 2012-11-03 22:46:09 · 676 阅读 · 0 评论 -
欧拉函数
欧拉函数:求小于n且与n互质(最大公约数为1)的数的个数#includeint Euler(int x){ int i,sum=x; for(i=2;i*i<=x;i++) { if(x%i==0) { sum-=sum/i; //不是很明白,为什么不是sum-=x/i ——参考因数分解 while(x%i==0) x/=i;原创 2012-08-18 14:04:45 · 1538 阅读 · 0 评论 -
一道母函数的模板题 (hdu 2082)
终于算弄明白母函数是什么东西了 = = , 呼~ 感觉它利用了高中学的二项式定理(就是用到组合数的那个) 完完全全的利用啊~~!以前用二项式求出最后那超长的x的表达式( 1 + C(n,1)*x^1 + C(n,2)*x^2 +~~~~~+ C(n,n-1)*x^(n-1) + C(n,n)*x^n )之后好歹还会给x赋个值算个答案到母函数这连赋值都省了……x就代表一个实体,原创 2012-07-17 22:03:04 · 2908 阅读 · 0 评论 -
优先队列
在普通队列的基础上 以权值大小执行进出队列的操作#include#includeusing namespace std;struct point{ int x,y,step; friend bool operator <(point t1,point t2) { // return t1.step>t2.step; //从小到大 return t1原创 2012-08-16 11:00:02 · 544 阅读 · 0 评论 -
hdu2824筛选法欧拉函数+求和
hdu2824筛选版本的欧拉公式模板#include#define MAX 3000000using namespace std;__int64 E[MAX+10];void init() //模板 { int i,j; memset(E,0,sizeof(E)); E[1]=1; for(i=2;i<=原创 2012-08-18 21:45:51 · 2662 阅读 · 0 评论 -
hdu1269 Tarjan强连通分量 模板
hdu1269资料师兄给的模板/*2012-12-06 20:16:08 Accepted 1269 46MS 1484K 1339 B C++*/#include #include #include using namespace std;#define maxn 10010int n;vector g[maxn];int Bcnt;原创 2012-12-06 21:59:38 · 4011 阅读 · 1 评论