树状数组
IcePrincess_1968
这个作者很懒,什么都没留下…
展开
-
ZOJ4008: Yet Another Tree Query Problem 题解
编号在l~r的点有r-l+1个,因为原图是一棵树,没有环,所以每多一条边,连通块就少1,所以我们只要求出顶点均在l~r的边的数目,最后用点数减一下就好 这个问题怎么处理呢,我刚开始想的是把所有的边抽象成平面上的一个点,横纵坐标分别代表两个端点编号,这样l~r之间的查询相当于查询一个正方形区域内有多少个点,但这个好像不能离散化,用什么二维数据结构也没用 考虑一种离线做法:将询问按照右端点排序,然...原创 2018-04-03 15:31:14 · 490 阅读 · 0 评论 -
BZOJ2743: 采花 题解
一眼看上去像莫队,但是范围是1e6,O(nn−−√)O(nn)O(n\sqrt{n})会炸 考虑离线以后用数据结构维护 其实这种技巧挺常见的,就是将询问按照右端点排序 然后枚举右端点,从右向左移动,每移动一个维护每种颜色从右向左数第二个在哪里,因为每次只会修改一种颜色,这个是很好维护的 用树状数组维护所有的颜色的“第二个”的位置的出现次数,那么对于查询[l,r],我显然要找从右向左数第二个...原创 2018-04-11 00:05:03 · 224 阅读 · 0 评论 -
CodeChef QRECT: Rectangle Query 题解
这题的思路还是挺巧妙的 最关键的一步是我们改求与当前矩形不相交的矩形个数 那么显然可以容斥,用完全在上面的+下面的+左面的+右面的-四个角上被重复算的 前面的四个比较好搞,以上面举例,插入矩形时把矩形的下边界插入树状数组,查询时抓住当前矩形的上边界在树状数组里查就好了 四个角的部分,以左上角为例,插入矩形时把矩形的右下角记录下来,查询时查矩形的左上角的左上方有多少个点 所以现在相当于要实...原创 2018-05-25 23:49:32 · 511 阅读 · 4 评论