题单链接
扫描线 - - 是不是有点点过分要求了 挑几个非板子题讲下。
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即可。
总结:线段树🐕都不写 但也还比较有意思