- 博客(8)
- 资源 (3)
- 收藏
- 关注
原创 一维树状数组
树状数组是对一个数组改变某个元素和求和比较实用的数据结构。两中操作都是O(logn)。 在解题过程中,我们有时需要维护一个数组的前缀和S[i]=A[1]+A[2]+...+A[i]。 但是不难发现,如果我们修改了任意一个A[i],S[i]、S[i+1]...S[n]都会发生变化。 可以说,每次修改A[i]后,调整前缀和S[]在最坏情况下会需要O(n)
2012-09-27 20:59:22 1317
原创 线段树求区间和(单点更新)
题目1:敌兵布阵 线段树的主要操作:(1)建立线段树(Build) (2)更新区间值 (Update) (3)查询区间(Query)写法一:#include #define maxn 55555#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1int sum[maxn<<2
2012-09-26 16:45:03 1454
原创 单源最短路径(Dijkstra算法)
1.Dijkstra算法: 算法思想:对于稀疏矩阵应采用邻接表的方式存储更好。 #include #include #define MAX 100#define INF 100000int cost[MAX][MAX];int dist[MAX],pre[MAX];void creatcost(int cost[][MAX],int vexn,int
2012-09-25 14:45:46 1902
原创 最小生成树
最小生成树的普利姆算法:#include #include #define MAX 100#define INF 100000int creatcost(double cost[][MAX],int vexn,int edge){ double w; int i,j; int v1,v2; for(i=1;i<=vexn;i++) for(j=1
2012-09-24 20:01:31 1391
原创 欧拉函数与欧拉定理
求欧拉函数的值:#include int phi(int n){ int i,m=n; for(i=2;i*i<=n;i++) { if(n%i==0) { m=m-m/i; while(n%i==0) n/=i; } } i
2012-09-22 18:44:05 7798 1
原创 康托展开
康托展开就是一种特殊的哈希函数,它的使用范围是对于n个数的排列进行状态的压缩和存储,例如要对9的全排列进行判重.没有必要开一个10^9的数组,同时内存也不允许开到那么大的数组.对此,有人提出了优化,即对于一个n的排列数,没有必要开到10^n,因为在一个排列中每个数只出现一次,所以只要前n-1位确定了,前N位就确定了.但是以上的想法仍不是可行的,因为N可以很大,例如15,所以便引入了
2012-09-15 14:34:24 8447 4
原创 C语言/C++基础知识
1.swap()函数: swap()函数只有在头文件是#include using namespace std;时才能用,例如:#include using namespace std;int main(){ int a=23,b=45; if(a<b) swap(a,b); cout<<a<<" "<<b<<endl; return 0;
2012-09-05 20:01:07 1336
原创 经典C++面试题
1.尔康:紫薇,一个开学的我如何拯救一个开学的你 紫薇: 尔康,我没有如期瘦得好似一道闪电,你却意外黑得像是一朵乌云。2.在我即将大二之际,我必须得向大一的你们声明,第一,你们的学姐是我们的,你们不要想;第二,我们的学 妹还是我们的,你们不要抢;第三,个别情况下,你们也是我们的,这个不要拒绝咯3. 每个月总有那么30天不想上学4.一节课40分钟,5分钟缓过
2012-09-05 17:20:51 2173 2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人