
树状数组
文章平均质量分 74
sunday_soft
毕业于东北大学,做教师和软件开发工作
展开
-
子树查询(POJ3321)
题目大意:有一棵苹果树,树上有N个叉(编号为1~N,根的编号为1),它们通过分支连接。苹果在叉上生长,两个苹果不会在同一个叉上生长,一个新的苹果可以在空叉上长出来,对苹果有两种操作。输入:第1行一个整数N(N≤100,000),表示树中叉的数量。以下N-1行,每行都包含两个整数,表示叉u和叉v通过分支连接。下一行包含整数M(M≤100,000)表示有M个操作。每行一个操作:C x表示改变叉上苹果状态(摘下一个苹果,或让长出一个新苹果)。Q x表示查询x叉上方子树中的苹果数量,包括叉上的苹果。注意:原创 2022-12-07 15:50:32 · 299 阅读 · 0 评论 -
公路交叉数(POJ3067)-树状数组解决逆序对
题目大意:东海岸有N个城市,西海岸有M个城市(N≤1000,M≤1000),将建K条公路。每个海岸的城市从北到南编号为1,2,…每条高速公路都是直线,连接东海岸和西海岸的城市。建设资金由高速公路之间的交叉数决定。两个高速公路最多在一个地方交叉。请计算告诉公路之间的交叉数量。输入:输入以T开始,表示测试用例的数量。每个测试用例都是3个整数N、M、K。下面的K行每一行都包含两个数字,表示高速公路连接的城市号。第一个数是东海岸的城市号,第二个数字是西海岸的城市号。输出:对每个测试用例都输出“Test c原创 2022-12-07 11:35:26 · 576 阅读 · 0 评论 -
数星星-树状数组(POJ2352)
DescriptionAstronomers often examine star maps where stars are represented by points on a plane and each star has Cartesian coordinates. Let the level of a star be an amount of the stars that are not higher and not to the right of the given star. Astronome原创 2022-12-07 10:05:17 · 413 阅读 · 0 评论 -
树状数组求逆序对
树状数组求逆序对任意给定一个集合a,如果用t[val]保存数值val在集合a中出现的次数,那么数组t在[l,r]上的区间和就表示集合a中范围在[l,r]内的数有多少个。我们可以在集合a的数值范围上建立一个树状数组,来维护t的前缀和。这样即使在集合a中插入或删除一个数,也可以高效的统计。也就是以前用普通方法维护t[ ]的前缀和,现在用树状数组来维护t的前缀和。对于一个序列a,若i<j且...原创 2020-02-27 17:07:45 · 773 阅读 · 0 评论 -
楼兰图腾_树状数组
题干:平面上有 N(N≤105 ) 个点,每个点的横、纵坐标的范围都是 1~N,任意两个点的横、纵坐标都不相同。若三个点 (x1,y1),(x2,y2),(x3,y3 ) 满足 x1<x2<x3, y1>y2 并且 y3>y2,则称这三个点构成"v"字图腾。若三个点 (x1,y1),(x2,y2),(x3,y3 ) 满足 x1<x2<x3, y1<y...原创 2020-02-28 10:40:37 · 220 阅读 · 0 评论 -
A Tiny Problem with Integers(树状数组区间增加、单点查询)
Description给定长度为N(N<=105)的数列A,然后输入M行操作指令。第一类指令形如“C l r d”,表示把数列中第l~r个数都加d。第二类指令形如“Q X”,表示询问数列中第x个数的值。对于每个询问,输出一个整数表示答案。Input第一行包含两个整数N和M。第二行包含N个整数A[i]。接下来M行表示M条指令,每条指令的格式如题目描述所示。数据范围:1≤N,...原创 2020-02-29 11:00:39 · 417 阅读 · 0 评论 -
A Simple Problem with Integers POJ3468(树状数组区间增加,区间查询)
题干:给定长度为N(N<=105)的数列A,然后输入Q(Q<=105)行操作指令。第一类指令形如“C l r d”,表示把数列中第l~r个数都加d。第二类指令形如“Q l r”,表示询问数列中第l~r个数的和。Sample Input10 51 2 3 4 5 6 7 8 9 10Q 4 4Q 1 10Q 2 4C 3 6 3Q 2 4Sample O...原创 2020-03-02 09:32:06 · 307 阅读 · 0 评论 -
Lost Cows poj2182(树状数组+二分)
题干:有n头奶牛(n<=105),已知它们的身高为1~n且各不相同,但不知道每头奶牛的具体身高。现在这n头奶牛站成一列,已知第i头奶牛前面有Ai头比它低,求每头奶牛的身高。输入:第1行,一个整数n,牛的头数第2~n行,每行一个数,表示前面有几头牛比它低。输出n行,每行一个数,代表n头牛的高度样例输入51210样例输出24531算法分析:如果最后一头奶...原创 2020-03-02 13:30:18 · 325 阅读 · 0 评论 -
树状数组基础
树状数组,又称二进制索引树,英文名Binary Indexed Tree。树状数组用来求区间元素和,求一次区间元素和的时间效率为O(logn)。有些同学会觉得很奇怪。用一个数组S[i]保存序列A[]的前i个元素和,那么求区间i,j的元素和不就为S[j]-S[i-1],那么时间效率为O(1),岂不是更快?但是,如果题目的A[]会改变呢?例如:我们来定义下列问题:我们有n个盒子。可能的操作...原创 2020-02-27 09:34:14 · 163 阅读 · 0 评论