摘要: 【题意】给序列局部排序,问最终排序完成的q位置 【分析】考虑暴力,每次都sort修改局部排序部分,时间复杂度为O(nmlogn) 观察到题目只求q一个位置上的值,所以我们可以对这个答案进行二分,然后把序列根据比mid大/小来转换成0/1 对于0/1的排序,我们可以用线段树计算排序区间l,r的1的个数 阅读全文
posted @ 2021-05-10 22:49 andyc_03 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 【题意】区间内ai修改为c^ai(c为给定的固定数),区间求和 【分析】这道题目需要用到一个扩展欧拉定理,我们发现我们实际上在不断的对幂进行取phi的操作,所以这个数量级降的也是十分快,可以先算出最多经历的次数t对于一个修改操作,如果这个区间的修改次数都多余t了,就不用在进行操作了,否则暴力修改即可 阅读全文
posted @ 2021-05-10 22:44 andyc_03 阅读(68) 评论(0) 推荐(0) 编辑
摘要: 【题意】区间开平方,区间求和 【分析】其实我们没有很好的维护区间开方的数据结构,不过我们可以发现开方的数量级降得很快,手动算一下,大概可以知道每个数至多开方6次,每次暴力去修改的时间复杂度是O(logn) 在实现的过程中,记录一个区间的max,当一个区间的max=1时,操作就没有意义了! 【代码】 阅读全文
posted @ 2021-05-10 22:42 andyc_03 阅读(79) 评论(0) 推荐(0) 编辑
摘要: 【题意】n条直线,求x=x0与这些直线交点y的最大值 【分析】这是李超线段树的模板题,我们用线段树维护区间内,在最上方最长的是哪条直线,考虑新增直线的影响 如果新增直线完全在原区间最优直线上方,直接修改即可 如果完全在下方,那就无影响 手动画一下,分类讨论加入直线的斜率和当前区间最优直线斜率,计算m 阅读全文
posted @ 2021-05-10 22:35 andyc_03 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 【题意】一个两两不同的序列,可以先任意交换两个数,然后就只能互换相邻的两个点,求最少要互换多少次使得原数列递增 【分析】这道题目到手很容易发现先要计算出逆序对数量,然后计算互换哪两个位置的减少逆序对数最多。 实现方式:考虑每个点表示成(i,a[i])序号为i,值为a[i] 考虑到一定要把一个左侧的较 阅读全文
posted @ 2021-05-10 22:29 andyc_03 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 【题意】链接 【分析】由于题目的N,M极大,所以我们要通过离散W来处理,我们考虑到两个树之间在当前方向上没有区别,所以一起计算 这里就用到了类似扫描线的思想,离散化后,从左到右,从下到上来处理,如果当前点和前一个位置在同一个列上,那么它们之间的所有位置都是上下方案数固定,只需要求在这两个高度区间内的 阅读全文
posted @ 2021-05-10 22:27 andyc_03 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 【题意】矩形面积求并 【分析】这是扫描线最基础的操作了,首先我们离散化,然后把矩形的上下边拆开存储,记录每个边是上边还是下边(读到上底加上这个长度,下底就减去) 想象一个平行于x轴的直线向上移,每次统计在扫描线上的线段长度,用长度乘以这段宽度 用线段树+1(底)/ -1(顶)去维护每段是否在当前的矩 阅读全文
posted @ 2021-05-10 22:21 andyc_03 阅读(46) 评论(0) 推荐(0) 编辑