有一种树叫做线段树,有一种数组叫做树状数组
2014-04-24 18:01
253 查看
近日受到微软编程之美大赛第二题和hdu一些题目变态般的大数据的刺激,而且老是听到群里的一些大神讲什么线段树,树状数组,分桶法呀等等一系列不明觉厉的东西,花了几天好好看了下线段树和树状数组,下面我来分享一些,我的心得和感悟,如有不足之处欢迎大神们前来狂喷。
微软编程之美初赛第一场树题解http://blog.csdn.net/asdfghjkl1993/article/details/24306921
线段树和树状数组都是一种擅长处理区间的数据结构。它们间最大的区别之一就是线段树是一颗完美二叉树,而树状数组(BIT)相当于是线段树中每个节点的右儿子去掉。
如图:
线段树
View Code
微软编程之美初赛第一场树题解http://blog.csdn.net/asdfghjkl1993/article/details/24306921
线段树和树状数组都是一种擅长处理区间的数据结构。它们间最大的区别之一就是线段树是一颗完美二叉树,而树状数组(BIT)相当于是线段树中每个节点的右儿子去掉。
如图:
线段树
void init() { for(int i=1;i<MAX;i++) for(int j=1;j<MAX;j++) { d[i][j]=1; c[i][j]=lowbit(i)*lowbit(j); } } int sum(int i,int j) { int tot=0; for(int x=i;x>0;x-=lowbit(x)) for(int y=j;y>0;y-=lowbit(y)) { tot+=c[x][y]; } return tot; } void add(int i,int j,int v) { for(int x=i;x<MAX;x+=lowbit(x)) for(int y=j;y<MAX;y+=lowbit(y)) { c[x][y]+=v; } }
View Code
相关文章推荐
- 有一种树叫做线段树,有一种数组叫做树状数组
- Sereja and Array-数组操作或者线段树或树状数组
- poj2155 二维树状数组 二位线段树 灵活运用 待补完
- 在 Perl看来, 字符串只有两种形式. 一种是octets, 即8位序列, 也就是我们通常说的字节数组. 另一种utf8编码的字符串, perl管它叫string. 也就是说: Perl只熟悉两种编
- hdu 1166 敌兵布阵(树状数组 or 线段树)
- POJ3468:A Simple Problem with Integers (线段树||树状数组||Splay解决基本问题的效率对比)
- HDU 1166 敌兵布阵(树状数组 or 线段树 单点修改 区间求和)
- POJ-3321-Apple Tree,线段树,树状数组。
- 指针指向数组并指定数组首地址的一种方法
- 有一种爱情叫做冯小刚与徐帆
- hdu1698Just a Hook (线段树 成段更新,这题目真是坑,按题目意思开的数组还小)
- javascript js jsp接收servlet传送的数组ArrayList的一种简单的非ajax方法
- POJ 1804 逆序对问题【分治】【线段树】【树状数组】【平衡树】
- 初识,线段树和树状数组
- 一种开辟多维数组的方法
- 有一种期待叫做未来
- 树状数组和线段树
- 【bzoj2120】数颜色【树套树+平衡树 树状数组套权值线段树】
- hdu 4031 attack 树状数组 线段树 两种做法
- 洛谷 P3605 [USACO17JAN]Promotion Counting晋升者计数——树状数组,权值线段树