
树状数组
文章平均质量分 89
kaiweisun
这个作者很懒,什么都没留下…
展开
-
poj 2352
树状数组第01讲 什么是树状数组?树状数组用来求区间元素和,求一次区间元素和的时间效率为O(logn)。有些同学会觉得很奇怪。用一个数组S[i]保存序列A[]的前i个元素和,那么求区间i,j的元素和不就为S[j]-S[i-1],那么时间效率为O(1),岂不是更快?但是,如果题目的A[]会改变呢?例如:我们来定义下列问题:我们有n个盒子。可能的操作为:1.向盒子k添加石块2....原创 2012-07-28 16:50:58 · 124 阅读 · 0 评论 -
poj 2481
题意:FJ有n头牛(编号为1~n),每一头牛都有一个测验值[S, E],如果对于牛i和牛j来说,它们的测验值满足下面的条件则证明牛i比牛j强壮:Si <= Sj and Ej <= Ei and Ei - Si > Ej - Sj。现在已知每一头牛的测验值,要求输出每头牛有几头牛比其强壮。 思路:树状数组。需要对牛i比牛j强壮的条件进行理解。把牛群按照测验值E的降序排...原创 2012-07-29 14:51:04 · 165 阅读 · 0 评论 -
poj 3067
题意:日本岛东海岸与西海岸分别有N和M个城市,现在修高速公路连接东西海岸的城市,求交点个数。做法:记每条告诉公路为(x,y), 即东岸的第x个城市与西岸的第y个城市修一条路。当两条路有交点时,满足(x1-x2)*(y1-y2) < 0。所以,将每条路按x从小到达排序,若x相同,按y从小到大排序。 然后按排序后的公路用树状数组在线更新,求y的逆序数之 和 即为交点个数。...原创 2012-07-29 15:46:45 · 123 阅读 · 0 评论 -
poj 1195
题意:这道题目只是题意自己就去理解了半天,大概题意如下:给出i一个n*n的矩阵,初始化为均为0,还有关于这个矩阵的几种操作,操作如下:命令1:(X Y A)对位于坐标(X Y)的值加A;命令2:(L B R T)求出位于L<=x<=R,B<=y<=T的值的和;命令3:退出不做任何操作。 思路分析如下:二维树状数组,典型的动态操作题目。查询子矩阵(x,y,xx,yy)...原创 2012-07-30 10:09:30 · 77 阅读 · 0 评论 -
poj 2155
题意:一个n*n的01矩阵,和几种动态操作,包括对子矩阵(x,y,xx,yy)的所有元素异或,查询某一点(x,y)的元素值。 思路:二维树状数组。异或操作不难修改,重点这道题目与普通的树状数组不同的是:普通的树状数组一般是修改点,查询区域;而这里是修改区域,查询点。所以要对普通的add()函数和sum()函数进行对调修改,这里要对两个函数的性质了解清楚,可以先从一维的树状数组理解入手,再按二维的模...原创 2012-08-01 15:18:27 · 134 阅读 · 0 评论 -
poj 1990
题意:FJ有n头牛,排列成一条直线(不会在同一个点),给出每头牛在直线上的坐标x。另外,每头牛还有一个自己的声调v,如果两头牛(i和j)之间想要沟通的话,它们必须用同个音调max(v[i],v[j]),沟通起来消耗的能量为:max(v[i],v[j]) * 它们之间的距离。问要使所有的牛之间都能沟通(两两之间),总共需要消耗多少能量。 思路:树状数组。很好的一道题。把牛按x升序排列,然后:(很难表...原创 2012-08-01 16:26:50 · 123 阅读 · 0 评论