线段树
文章平均质量分 57
reisen.inaba
我好菜啊qwq
展开
-
Hotel(线段树区间合并)
题目 有n个房间,m次操作,操作 1 x表示有x个人要入住,并且房间要挨着,就是要找到连续的x个房间,输出左端点值,操作 2 x ,y表示x~x+y-1的房间清空了。 又是日常不会然后去百度,线段树花样也太多了吧。 维护三个值sum,lmax,rmax,分别表示区间最大连续,从左端点开始的最大连续,和从右端点开始的最大连续。 tree[node].sum显然是Max(tree[node<<1].sum,tree[node<<1∣1].sum,tree[node<<1].r原创 2021-07-24 11:06:46 · 109 阅读 · 0 评论 -
逆序对(权值线段树)
题目 逆序对可以用归并和树状数组求,应该比线段树快,这里只是为了学习下权值线段树。 权值线段树就是维护每个数出现的次数,可以用来求数组的第K大元素。 而求逆序对个数,就是求每个数前面有多少大于自己的数,所以可以用权值线段树来写, 比如查询一个数a, a<=mid,说明a在左子树中,所以所有柚子树的元素都比a大,答案就为左子树中大于a的数加上柚子树的数的个数。 否则a在柚子树中(什么傻逼输入法啊),答案为柚子树大于a的个数。 代码 #include<bits/stdc++.h> #defi原创 2021-07-23 22:28:12 · 184 阅读 · 0 评论