2012年8月8日

poj(2325)线段树

摘要: 这里介绍另外一种解法,此题可以用线段树,可以用树状数组其实这题求的都是下面的和左面的,线段树这种数组结构刚好可以满足,为什么呢?这里稍微解释下吧,也有助于以后的复习看上面这个图,[1,1],[2,2]这样的叶节点表示题目的的图中的最下一层,而[4,5],[1,3]这样节点的value值是是其子节点之和,多以可以理解为在二维坐标系中是高于下面的节点的,其子节点都在它的左面,可能说的比较模糊,我也是想一会就明白了 1 #include<iostream> 2 #include<fstream> 3 4 using namespace std; 5 6 struct e{ 7 阅读全文

posted @ 2012-08-08 20:38 矮人狙击手! 阅读(362) 评论(0) 推荐(0)

poj2352(树状数组)

摘要: 2011-08-08 20:01:28第一道树状数组,赤裸裸的树状数组题目大意看了半天啊,曾一度想找个学英语的给我翻一下,原来看题都没有觉得这么难理解这里贴一个有翻译的链接:http://www.docin.com/p-270244818.html其实这道题图的样子和树状数组的图的样子是一样的,都是求左边的和下面的之和,画个图或许可以帮助理解 1 #include <iostream> 2 #include <stdio.h> 3 using namespace std; 4 int c[32005]; 5 int lowbit(int x) 6 { 7 return 阅读全文

posted @ 2012-08-08 20:06 矮人狙击手! 阅读(611) 评论(0) 推荐(0)

树状数组

摘要: 转自:http://www.cnblogs.com/yykkciwei/archive/2009/05/08/1452889.html#commentform(有删改)问题提出:已知数组a[],元素个数为n,现在更改a中的元素,要求得新的a数组中i到j区间内的和(1<=i<=j<=n).思考:对于这个问题,我们可以暴力地来解决,从a[i]一直累加到a[j],最坏的情况下复杂度为O(n),对于m次change&querry,合起来的复杂度为O(m*n),在n或m很大的情况下,这样的复杂度是让人无法忍受的.另外,如果没有元素的变更,我们完全可以存储sum[1,k](k=1 阅读全文

posted @ 2012-08-08 17:08 矮人狙击手! 阅读(220) 评论(0) 推荐(0)

hdu4339(线段树)

摘要: 线段树啊,有是线段树,有点东西老是搞不懂,build,update ,query,这三个函数到底怎么写,还是不太懂啊有时候看代码真的很抽象,画个图或许可以帮助理解 1 #include <iostream> 2 #include <string.h> 3 #include <cstring> 4 #include <stdio.h> 5 using namespace std; 6 char b[1000005],f[1000005]; 7 int first,a,d; 8 int min(int a ,int b) 9 { 10 return 阅读全文

posted @ 2012-08-08 16:15 矮人狙击手! 阅读(385) 评论(0) 推荐(0)

导航