树状数组
LoveKobe_
热爱算法,喜欢编程,独立思考。做自己想做的事,风雨无阻!
展开
-
POJ1990 MooFest 树状数组(Binary Indexed Tree,BIT)
N头牛排成一列,每头牛的听力是Vi,每头牛的位置Pi,任意两头牛i,j相互交流时两头牛都至少需要发出声音的大小为max(Vi,Vj) * |Pi-Pj|,求这N头牛两两交流总共发出的声音大小是多少。N,V,P都是1-20000的范围。 这题首先对Vi从小到大进行排序,排序过后就可以依次计算i,将所有比Vi小的牛到i之间的距离之和乘以Vi得到Ri,然后累加Ri就是最终结果原创 2014-07-24 22:19:29 · 704 阅读 · 0 评论 -
POJ2155 Matrix 二维树状数组应用
一个N*N(1C x1,y1,x2,y2 表示从x1行y1列到x2行y2列的元素全部反转(0变成1,1变成0);Q x y表示询问x行y列的元素是0还是1。 题目乍一看感觉还是很难,如果能记录每一个元素的状态值,那答案是显而易见的,但是元素过多,如果每次都对每一个元素进行更新状态的话,复杂度太高。实际上只要记录边界的特定坐标的反转次数,最好的选择那就是二维树状数组了。原创 2014-07-27 09:10:32 · 797 阅读 · 0 评论