随笔分类 -  [C++]数据结构-树状数组

摘要:题面 "Bzoj" 题解 很显然,我们只需要考虑单独取线段上方的情况,对于下方的把坐标取反再做一遍即可(因为我们只关心最终的答案) 建立树状数组维护一个横坐标区间内有多少个点,维护双向链表实现查询一个点左(右)横坐标最大(小)的与它相同的点。 首先枚举没有取到的颜色,找出所有不包含这种颜色的区间,更 阅读全文
posted @ 2019-02-03 16:57 water_mi 阅读(239) 评论(0) 推荐(0)
摘要:"题面" 题解 这种题目一看就是重链剖分裸题,还是区间修改,单点查询,查询之前在遍历时要记一个$delta$,因为这一次的起点就是上一次的终点,不需要放糖,所以可以用$BIT$来写,但我写完$modify$才反应过来,所以没改了。 cpp include include include using 阅读全文
posted @ 2018-11-03 17:00 water_mi 阅读(227) 评论(0) 推荐(0)
摘要:逆序对 对于一个数列$a_1...a_n$,定义一有序对$(i,j)$当且仅当$ia_j$为逆序对。接着我们来考虑怎么求 1. 归并排序 回顾归并排序的过程,将当且的数列$[l,r]$分成两个长度相等的部分$[l,mid]$和$[mid+1,r]$,分治下去排序,每次合并的代价是区间的长度,所以得到 阅读全文
posted @ 2018-10-18 17:15 water_mi 阅读(1533) 评论(0) 推荐(0)