
树状数组
monzaid
这个作者很懒,什么都没留下…
展开
-
hdu 2852 KiKi‘s K-Number
题目:hdu2852题意:有一个盒子,有如下操作:0 x:往盒子里放一个数 x,( x 可以多次放入)1 x:从盒子里删掉一个数 x。(如果 x 有多个,只删1个,如果没有,则输出No Elment!)2 x k:查询盒子里大于 x 的第 K 个数。(如果没有,则输出Not Find!)思路:树状数组 + 二分查找代码:#include <iostream>#include <algorithm>#include <cstring>#define原创 2021-01-27 12:38:19 · 153 阅读 · 0 评论 -
poj 1990 MooFest & hdu 3015 Disharmony Trees
题目:poj1990题意:计算每两头牛的噪音的和。两头牛的噪音 = max(牛1噪音,牛2噪音) * 两头牛的距离差思路:用两个树状数组,一个记录牛的总数,另一个记录牛的总距离。把牛按 v 值从小到大排序(v相等时,x不影响噪音总和)再遍历数组,计算在点 x 的左边有多少头牛,右边有多少头牛,左边的总距离差,右边的总距离差,ans += v * (左边的总距离差 + 右边的总距离差),而左边的总距离差 = x * 左边有多少头牛 - 左边的总距离(1 ~ x 内牛的总距离),右边的总原创 2021-01-26 23:22:43 · 140 阅读 · 0 评论 -
(非连续型树状数组)poj 3321 Apple Tree
题目:poj3321题意:给你一棵以1为根的树,树上的结点不成规律(即pos结点的左子树不是pos<<1,右子树不是pos<<1|1),因此不能用线性数组来存数据。结点初始有1个apple,有如下操作:C pos:把pos结点的apple取反(即1→0,0→1)Q pos:查询pos结点以及它的子节点的apple总个数思路:先根据输入的数据建树,再计算每个结点的有效范围(每个结点在树状数组的起点和终点,即这个有效范围包含了这个结点和它的子节点,as:一个结点的有效范围是原创 2021-01-26 20:43:37 · 99 阅读 · 0 评论 -
(二维树状数组)poj 1195 Mobile phones & poj 2155 Matrix
poj1195题意:一个二维矩阵,有如下操作:0 S:创建一个S * S的二维矩阵1 x y v:在点 [ x , y ] 的值加上 v2 x1 y1 x2 y2:计算在区间 [ x1 , y1] ~ [ x2 , y2 ] 中所有点的和3:结束poj2155题意:一个二维矩阵,有如下操作:C x1 y1 x2 y2:在区间 [ x1 , y1] ~ [ x2 , y2 ] 的值取反(即1→0, 0→1)Q x y:查询 点[ x , y ] 的值思路:二维树状数组的查找与添加另原创 2021-01-26 12:40:35 · 135 阅读 · 0 评论 -
poj 2481 Cows
题目:poj2481题意:区间包含问题,牛2的范围 ⊆ 牛1的范围并且牛2的范围 ≠ 牛1的范围,那么牛1比牛2强思路:将牛的范围按e从大到小排序,e相等则按s从小到大排序。然后把牛范围的s值逐个插入树状数组,并计算0~s的和代码#include <iostream>#include <algorithm>#include <cstring>using namespace std; const int MAXN = 1e5 + 10;#define原创 2021-01-26 07:55:52 · 96 阅读 · 0 评论