线段树入门专题(Day1)

题单链接
在这里插入图片描述
扫描线 - - 是不是有点点过分要求了 挑几个非板子题讲下。

HDU1394 题目链接
题意就是给了我们一个序列,【0,N-1】的一个排列,现在他循环移动,要我们求移动到某一种情况时候的最小逆序对数。
解析:
逆序对数就是 对于i<j且ai>aj 称为一对。对于一个序列求逆序对数就是依次插入线段树/树状数组, 查询当前有多少个比它大的数。因为每次都是把第一个数扔到末尾,所有每次移动的逆序数改变就是sum-(ai-1)+(n-ai)

HDU5592题目链接
它给出了一个N的某种排列与A数组,Ai代表前缀逆序对数,现在要我们还原整个数组。QAQ easy ,考虑到最后一个数,An-An-1即前面有多少个比它大的数,那么它就是在【1,N】中排第k大,然后我们只需要对剩下的还没使用的数里面二分查找第K大即可。

POJ 2777题目链接
染色问题,只不过颜色只有30种。C代表区间染色操作,P代表查询区间有多少种不同的颜色。考虑到用二进制来表示一个区间的颜色种类。那么只需要传递lazy的时候,儿子向上传递 左col 或上 右col 即为当前root的颜色。最终只需要区间查询下这个数,然后枚举二进制即可。

I题扫描线,偏计算几何了 - - 存个板子吧。

HDU4747 区间mex求和
其实这个题,我们要考虑到以每个i 固定左端点,就很好办了
预处理【1,i】的前缀mex和每个数的下一次出现的下标数组next。
那么每次删掉当前ai,影响mex的区间只会波及到【i+1,next[a[i]] -1 】
讨论下即可。然后二分出所需要的端点,区间修改mex即可。

总结:线段树🐕都不写 但也还比较有意思

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值