摘要:树状数组适合单个元素经常修改,而且还要反复求某个区间的和 树状数组的编程效率和程序运行效率都要比线段树要高(时间复杂度一样,但是梳妆数组的常数较小)如果每次修改的不是一个数,而是一个区间就不适合用树状数组了(效率较低)树状数组的时间复杂度总结:建数组0(n)更新0(logn)局部求和0(logn)当...
阅读全文
摘要:线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。因此线段树是平衡二叉树,最后的子节点数目为N,即整个线段区...
阅读全文
摘要:窝觉得Floyd好简单,dikstra跟Floyd一样都是n3,还是觉得Floyd写起来简单hdu2544代码:#include "bits/stdc++.h"#define inf 0x3f3f3f3fint dis[110][110];int main(){ int i,j,k,t; int n...
阅读全文
摘要:总感觉Dijkstra跟prim思路很像,现在仔细想想虽然都算的上贪心,但是Dijkstra比prim复杂一点prim算法是一个最小生成树算法,它运用的是贪心原理(在这里不再证明),设置两个点集合,一个集合为要求的生成树的点集合A,另一个集合为未加入生成树的点B,它的具体实现过程是:第1步:所有的点...
阅读全文
摘要:宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。poj3278思路:根节点n, n+1,n-1,2*n三个子节点不断地延伸,目标节点k,寻找这样一天最短的路...
阅读全文
摘要:dfs:注意的小问题,如果是多路径的话,一次memset(vis,o,sizeof(vis))如果跟步骤有关要申请一个全局变量理解栈与递归hdu 1518数据拼正方形;思路:就是排序,首先可以剪枝,就是sum%4!=0的,有个小的处理就是先求出sum/4;#include #include usin...
阅读全文
摘要:代码:#include #include #include using namespace std;#define N 1010int p[N];int v,l;struct Kruskal //存储边的信息{ int a,b; int value;};bool cmp(Kruskal a,Krus...
阅读全文
摘要:最小生成树之prim代码poj1258#includeusing namespace std;#include#define Maxint 0x3f3f3f3f#define N 110int map[N][N],low[N],vis[N];int n;int prim(){ int i,j,pos...
阅读全文