文章分类 -  Model

1 2 下一页

SplayTree
摘要:#include#include#includeusing namespace std;typedef int Intstruct Node{ int size,padir,reverse;};struct Stack{ int top; Stack():top(0){} Node * node[maxn]; Node * operator [](const int i)const{ return node[i]; }}stack;void Clear(Node * &root){ root=nil; root->size=0; }Node * CreatNode(){ Node 阅读全文

posted @ 2013-08-21 15:09 Amyc 阅读(256) 评论(0) 推荐(0)

LLRBTree
摘要:// RBTree#define BLACK 0#define RED 1typedef int IntStruct RBNode{ RBNode *chi[2],*pa; int color,cnt;}*nil=new RBNode(),*root=nil;void Nil(){ CreatNode(nil,0,BLACK,0); } RBNode * CreatNode(RBNode * &node,Int val,int color,int cnt=1){ if(node!=NULL && node!=nil){ RBNode *p=node; delete p; 阅读全文

posted @ 2013-08-19 11:07 Amyc 阅读(321) 评论(0) 推荐(0)

分拆素数和
摘要:// 分拆素数和#includeusing namespace std;bool isprime(int n){ if(n<=2) return false; int i; for(i=2;i*i<=n;i++){ if(n%i==0) return false; } //cout<<n<<" ";// return true;}int main(){ int i,n; int ans; int a[10005]={0}; for(i=3;i<=10005;i+=2){ if(isprime(i)) a[i]=1; } while( 阅读全文

posted @ 2013-08-13 21:35 Amyc 阅读(120) 评论(0) 推荐(0)

最长递增子序列
摘要://最长递增子序列 INIT:a[]void lisub(int n){ rb[0]=0; for(int i=0,size=0;i<n;i++){ int pos=BSearchUpperBound(rb,0,size,a[i]); if(size==pos) size++; rb[pos+1]=a[i]; ans[i]=pos+1; }} 阅读全文

posted @ 2013-08-13 21:32 Amyc 阅读(96) 评论(0) 推荐(0)

深度优先搜索dfs
摘要://深度优先搜索dfs://INIT type map[maxn][maxn]; bool vst[maxn][maxn]; //MODIFIED:const int maxn=100; void dfs(int r,int k) { int i; if(...){ //到达终点 .... //处理 return; } for(i... ){ //逐个遍历子节点 if(!vst[i] && ...){ vst[i]=1; dfs(...); //将子节点作为父节点深搜... 阅读全文

posted @ 2013-08-13 21:31 Amyc 阅读(200) 评论(0) 推荐(0)

三分查找
摘要://三分查找(凹函数)double thirds(double low,double high){ double f1,f2; f1=fiction(low); f2=fiction(high); while(fabs(f1-f2)>eps){ double mid1 = low + (high-low)/3; double mid2 = high - (high-low)/3; f1=fiction(mid1); f2=fiction(mid2); if(f1f2) high = mid2; else if(fabs(f1-f2)<=eps) low = high; ... 阅读全文

posted @ 2013-08-13 21:30 Amyc 阅读(156) 评论(0) 推荐(0)

二分查找
摘要://二分查找 INIT:a[]bool BinSearch(int *a,int low,int high,int target){ //a数组递增; while(lowtarget) high=mid-1; else low=mid+1; } return false;}//找到一个位置使右边的数>=此位的数 INIT:arr[]int BSearchUpperBound(int arr[], int low, int high, int target){ while(low=target) high=mid-1; if(arr[mid]<target) low... 阅读全文

posted @ 2013-08-13 21:28 Amyc 阅读(92) 评论(0) 推荐(0)

阶乘
摘要:// 阶乘#includeconst int maxn = 3000;int fac[maxn],len;void fact(int n){ int i,j; memset(fac,0,sizeof(fac)); fac[0]=1; for(i=2;i=0;j--) if(fac[j]) break; len=j+1;}void wofa(int n){ int i; fact(n); for(i=len-1;i>=0;i--) printf("%d",fac[i]); printf("\n");}int main() { int n; scanf 阅读全文

posted @ 2013-08-13 21:27 Amyc 阅读(146) 评论(0) 推荐(0)

矩阵相乘
摘要://矩阵相乘 int temp[maxn][maxn]; INIT:; MODIFIED:const int maxn=101;void matMul(int b[][maxn]){ memset(temp,0,sizeof(temp)); for(int i=0;i<M;i++) for(int j=0;j<M;j++){ for(int k=0;k<M;k++) temp[i][j]+=a[i][k]*b[k][j]; } for(int i=0;i<M;i++) for(int j=0;j<M;j++) ... 阅读全文

posted @ 2013-08-13 21:26 Amyc 阅读(157) 评论(0) 推荐(0)

矩阵快速幂
摘要://矩阵快速幂 INIT:xvoid matPow(){ matInit(); while(X>0){ if(X%2) matMul(ans); //ans=ans*a matMul(a); //a=a*a; X/=2; }} 阅读全文

posted @ 2013-08-13 21:25 Amyc 阅读(74) 评论(0) 推荐(0)

矩阵初始化
摘要://矩阵初始化 int a[maxn][maxn],ans[maxn][maxn]; INIT:M; MODIFIED:const int maxn=101; void matInit(){ memset(a,0,sizeof(a)); memset(ans,0,sizeof(ans)); for(int i=0;i<M;i++) ans[i][i]=1; //构建单位矩阵 for(int i=0;i<M;i++) a[i][i]=a[(i+1)%M][i]=1; //MODIFIED} 阅读全文

posted @ 2013-08-13 21:24 Amyc 阅读(679) 评论(0) 推荐(0)

完全背包
摘要://完全背包:val[maxv]={0}; INIT:bn,gv,b[bn],c[bn]; MODIFIED:const int maxv=10001; void cp(){ int i,j; for(i=0;i<bn;i++) { for(j=b[i];j<=gv;j++) { val[j]=max(val[j],val[j-b[i]]+c[i]); } } } 阅读全文

posted @ 2013-08-13 21:22 Amyc 阅读(111) 评论(0) 推荐(0)

01背包
摘要://01背包for i=1..N for v=V..0 f[v]=max{f[v],f[v-c[i]]+w[i]}; 阅读全文

posted @ 2013-08-13 21:18 Amyc 阅读(78) 评论(0) 推荐(0)

AVL平衡树
摘要:// AVLTree #include #include #include #include #include #include #includeusing namespace std; int cnt=0; #define abs(x) (((x)chi[0]=nil->chi[1]=nil->pa=nil; nil->bf=nil->cnt=0; nil->blank=nil->len=nil->hei=0; } inline AVLNode * CreatNode(AVLNode * &node,Int val,int cnt=1){ i 阅读全文

posted @ 2013-08-13 18:10 Amyc 阅读(127) 评论(0) 推荐(0)

二叉查找树
摘要:typedef int Int;struct BSTNode{ BSTNode *kid[2],pa; Int val; int cnt;}*root,*nil;nil=new BSTNode();root=nil;BSTNode * Search(BSTNode * node,Int val){ while(node!=nil && val!=node->val){ int drct=(valval)?0:1; node=node->kid[drct]; } return node;}BSTNode * Extrema(BSTNode * node,int drc 阅读全文

posted @ 2013-08-13 15:13 Amyc 阅读(149) 评论(0) 推荐(0)

线段树
摘要:// SegmentTreestruct SegNode{ int lst,rst; int sum,val; int lazy;};SegNode node[maxn];void BuiSegTree(int idx,int lst,int rst,int a[]){ node[idx].lst=lst; node[idx].rst=rst; int mid=(lst+rst)#includeusing namespace std;int in[200000]; //40000开太小,越界int lowbit(int a){ return a&-... 阅读全文

posted @ 2013-08-13 12:53 Amyc 阅读(177) 评论(0) 推荐(0)

预处理log2n
摘要:// log2nfor(int ep2=2,i=0,j=0;iep2){ j++; ep2<<=1; } lg2[i]=j;} 阅读全文

posted @ 2013-08-13 12:26 Amyc 阅读(246) 评论(0) 推荐(0)

树状数组
摘要:// BITreeint bitree[maxn];#define lowbit(n) ((n)&(-n))void BuiBIT(int n,int a[]){ for(int i=1;i0;i-=lowbit(i)) sum-=bitree[i]; return sum;} 阅读全文

posted @ 2013-08-13 12:24 Amyc 阅读(92) 评论(0) 推荐(0)

最近点对
摘要:最近点对 阅读全文

posted @ 2013-08-13 11:13 Amyc 阅读(143) 评论(0) 推荐(0)

RMQ
摘要:// Name : RMQ// Parameter : // Return : 无void RMQInit(int rmq[][],int a[]){ for(int i=0;i<n;i++) rmq[i][0]=a[i]; for(int j=1;(1<<j)<n;j++) for(int i=0;i+(1<<j)-1<n;i++) rmq=[i][j]=min(rmq[i][j-1],rmq[i+(1<<(j-1))][j-1]);}int RMQ(int l,int r){ int j=lg2[r-l+1]; return min(r 阅读全文

posted @ 2013-08-13 10:47 Amyc 阅读(106) 评论(0) 推荐(0)

1 2 下一页