2013年7月11日

树状数组 求区间最值

摘要: 转载出处:http://www.cnblogs.com/ambition/archive/2011/04/06/bit_rmq.html树状数组(Binary Index Tree)利用二进制的一些性质巧妙的划分区间,是一种编程,时间和空间上都十分理想的求区间和的算法,同样我们可以利用树状数组优美的区间划分方法来求一个序列的最值约定以 num[] 表示原数组, 以 idx[] 表示索引数组,Lowbit(x)=x&(-x)树状数组求和时通过构造数组 idx[] 使 idx[k]=sum(num[tk]), tk [k-Lowbit(k)+1,k], 使用同样的方法构造最值索引数组:以最 阅读全文

posted @ 2013-07-11 15:41 _洋洋 阅读(355) 评论(0) 推荐(0) 编辑

hdu 1166 敌兵布阵 树状数组问题

摘要: 敌兵布阵Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 27947Accepted Submission(s): 11979 Problem DescriptionC国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地 阅读全文

posted @ 2013-07-11 15:19 _洋洋 阅读(181) 评论(0) 推荐(0) 编辑

【转】树状数组

摘要: 【转】树状数组【引言】 在解题过程中,我们有时需要维护一个数组的前缀和S[i]=A[1]+A[2]+...+A[i]。 但是不难发现,如果我们修改了任意一个A[i],S[i]、S[i+1]...S[n]都会发生变化。 可以说,每次修改A[i]后,调整前缀和S[]在最坏情况下会需要O(n)的时间。 当n非常大时,程序会运行得非常缓慢。 因此,这里我们引入“树状数组”,它的修改与求和都是O(logn)的,效率非常高。【理论】 为了对树状数组有个形 象的认识,我们先看下面这张图。 如图所示,红色矩形表示的数组C[]就是树状数组。 这里,C[i]表示A[i-2^k+1]到A[i]的和,而k则是i在.. 阅读全文

posted @ 2013-07-11 10:39 _洋洋 阅读(189) 评论(0) 推荐(0) 编辑

hdu 1232 畅通工程 并查集

摘要: 畅通工程Time Limit: 4000/2000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Problem Description某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路?Input测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是城镇数目N ( #includeusing namespace std;int a[100 阅读全文

posted @ 2013-07-11 09:58 _洋洋 阅读(180) 评论(0) 推荐(0) 编辑

导航