摘要:
【题意】区间开平方,区间求和 【分析】其实我们没有很好的维护区间开方的数据结构,不过我们可以发现开方的数量级降得很快,手动算一下,大概可以知道每个数至多开方6次,每次暴力去修改的时间复杂度是O(logn) 在实现的过程中,记录一个区间的max,当一个区间的max=1时,操作就没有意义了! 【代码】 阅读全文
摘要:
【题意】n条直线,求x=x0与这些直线交点y的最大值 【分析】这是李超线段树的模板题,我们用线段树维护区间内,在最上方最长的是哪条直线,考虑新增直线的影响 如果新增直线完全在原区间最优直线上方,直接修改即可 如果完全在下方,那就无影响 手动画一下,分类讨论加入直线的斜率和当前区间最优直线斜率,计算m 阅读全文
摘要:
【题意】一个两两不同的序列,可以先任意交换两个数,然后就只能互换相邻的两个点,求最少要互换多少次使得原数列递增 【分析】这道题目到手很容易发现先要计算出逆序对数量,然后计算互换哪两个位置的减少逆序对数最多。 实现方式:考虑每个点表示成(i,a[i])序号为i,值为a[i] 考虑到一定要把一个左侧的较 阅读全文
摘要:
【题意】链接 【分析】由于题目的N,M极大,所以我们要通过离散W来处理,我们考虑到两个树之间在当前方向上没有区别,所以一起计算 这里就用到了类似扫描线的思想,离散化后,从左到右,从下到上来处理,如果当前点和前一个位置在同一个列上,那么它们之间的所有位置都是上下方案数固定,只需要求在这两个高度区间内的 阅读全文
摘要:
【题意】矩形面积求并 【分析】这是扫描线最基础的操作了,首先我们离散化,然后把矩形的上下边拆开存储,记录每个边是上边还是下边(读到上底加上这个长度,下底就减去) 想象一个平行于x轴的直线向上移,每次统计在扫描线上的线段长度,用长度乘以这段宽度 用线段树+1(底)/ -1(顶)去维护每段是否在当前的矩 阅读全文