树状数组

树状数组

树状数组理解的时候还是打脑壳,但是实现的时候发现那么简单。这个想法确实溜!同样都是数组,我们就只能耍点循环递归就不得了,人家嗯是耍的有盐有味,真的溜

博客推荐:
树状数组入门
夜深人静写算法
树状数组模板代码

做题推荐用这个顺序:
树状数组题目

void add(int index, int value){
	for(int i = index; i <= 32001; i += (i&(-1*i))){
		c[i] += value;
	}
}

int sum(int index){
	int answer = 0;
	for(int i = index; i; i -= (i&(-1*i))){
		answer += c[i];
	}
	return answer;
}

HDU1166
之前用线段树做过的基础题

HDU1541
逆序数的模型题

POJ2892
做这道题的时候我还没有研究二分模型,然后想了一些办法,套了区间更新模型,搞了哈能不能把树状数组像线段树那样每个节点记录最大值的信息。最后发现都不得行,感觉这个树状数组只能加减,而且确实查询都只有在求和上面下功夫,虽然树状数组实现比线段树简单很多,但是却是有些操作不简单。。
然后我始终感觉直接用二分法查找一哈就出来,用multiset就可以解决,但是我估计都办要超时之类的,毕竟STL的东西虽然用起方便,但是消耗还是不小的,但是没想到的是居然过了~

POJ2299
离散化+逆序+树状数组

POJ1195
记录二维的sum

POJ2481
这道题也是逆序数模型,但是要注意左右区间相同的情况

POJ1990
开始还以为又是逆序数,我也不晓得是啥子

HDU2492
这道题我没有转过弯,哎~

抄别人一个图:三大OJ推荐
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值