扫描线
是很强大的东西。
难点是精确地刻画出限制。就是要找到限制的一个充要条件,然后放到二维平面上去用扫描线+DS维护。
常见构造二维平面的方式:以询问
正难则反
正着刻画限制不太行,就尝试刻画出不符合限制的情况,这样放到二维平面上。最后的答案形式或许是矩形的补。
这是常见+Simple的。
反演的想法
For instance,我们查
这样我们可以考虑一个元素对于询问的贡献然后扫描线。
来点例题
P1502 窗口的星星
由于窗户大小固定,我们以它的右上角来表示它的位置。考虑一个位置上的星星可以对哪些位置上的窗户造成贡献,发现贡献范围是一个矩形。
问题转化为:矩形加,查询所有点中的最值。于是扫描线可以做了。
区间子区间问题
首先需要刻画出子区间要满足的限制,剩下的都是套路。
设
来点例题
P3246 [HNOI2016] 序列
设
如何求出每个
扫Sequence维,DS时间维
特点是区间修改,单点询问。
我们每个时刻在序列上做修改或查询,可以构造以序列为横轴,时间为纵轴的二维平面。发现一次修改造成的影响范围在平面上是一个矩形。
我们用DS维护时间维,维护的是操作造成的影响。扫描线去扫序列,依次回答单点询问。
来点例题
P3863 序列
就是矩形加,然后在扫描线上查询一段前缀中不小于
每个询问的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】