
树状数组
Lifel
dcoi 蒟蒻一枚 欢迎交流~~~qq:1627767186
展开
-
vijos 1066 树状数组
描述永恒和mx正在玩一个即时战略游戏,名字嘛~~恕本人记性不好,忘了-_-b。 mx在他的基地附近建立了n个战壕,每个战壕都是一个独立的作战单位,射程可以达到无限(“mx不赢定了?!?”永恒ftING…@_@)。 但是,战壕有一个弱点,就是只能攻击它的左下方,说白了就是横纵坐标都不大于它的点(mx:“我的战壕为什么这么菜”ToT)。这样,永恒就可以从别的地方进攻摧毁战壕,从而消灭mx的部队。原创 2017-03-06 19:59:04 · 390 阅读 · 0 评论 -
bzoj3631: [JLOI2014]松鼠的新家 树链剖分||树形dp
题目大意: 每次对一条链进行区间修改,最后询问每个点的点权树剖裸题,似乎dfs序也可以做?有时间再补#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fod(i,a,b) f原创 2017-09-13 21:24:57 · 539 阅读 · 0 评论 -
bzoj1452: [JSOI2009]Count(二维树状数组)
二维树状数组裸题,开一百个树状数组维护每一个颜色个数即可#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fod(i,a,b) for(int i=a;i>=b;i--)u原创 2017-09-13 22:21:29 · 558 阅读 · 1 评论 -
Codevs1082 线段树练习三(树状数组)
终于抽出时间学了一发树状数组的区间修改用c[i]=a[i]−a[i−1]c[i]=a[i]-a[i-1] 很容易得到:a[i]=∑i=1cia[i]=\sum_{i=1} c_{i} s[i]=(i−1)⋅c[i]s[i]=(i-1)\cdot c[i] 那么到n的答案为 ans=(n−1)⋅∑i=1ci−∑i=1sians=(n-1)\cdot\sum_{i=1} c_i-\sum_{i=原创 2017-08-29 22:02:49 · 400 阅读 · 0 评论 -
POJ 2155 二维树状数组+差分
题目大意:给定一个初始时全部为0的n*n的矩阵,然后将一个子矩阵中的全部元素取反,询问一个元素当前是什么 思路:将取反操作当成转化为操作次数,容易得到若操作次数为偶数则为0否则为1.将问题转化为区间修改+单点查询.对于区间修改用差分实现,则答案为所有前缀和.用树状数组维护即可 PS:这题输入很恶心,数后还有一个空格#include<iostream>#include<cstdio>#incl原创 2017-09-01 15:21:34 · 390 阅读 · 0 评论 -
LightOJ 1118 树状数组+离线
题目大意:给出一个序列,每次询问(l,r)区间的不同的数的个数 思路:将每个询问按照r升序排序,若当前到达i,a[i]出现过,则之前位置-1,当前位置+1,若没有出现过则当前位置+1 为什么要sum[r]-sum[l-1]是对的:因为当前计算贡献的对应的有且只有一个,并且其值对应的位置是最新的位置 为什么按照升序排列:因为按照升序排列保证我们当前出现的值都在所要询问的区间之内.否则会出现它的值原创 2017-09-01 17:11:36 · 455 阅读 · 0 评论