2025.2.6

HZTG 鸬鹚

注意到矩形至多合并 \(n-1\) 次。

考虑对 \(x\) 维扫描线,用线段树维护 \(y\) 维。

按每个矩形的 \(x_2\) 排序,将 \(x_2\) 信息挂在线段树上(用链表的东西存),查询使用 \(x_1\) 进行判断即可。

注意到排序后每次在链表从后向前查是具有单调性的(因为加入时就是具有单调性的),所以可以倒叙遍历加懒惰删除。

但此时依旧有点问题,因为这个东西是标记永久化的形式,而修改查询都是区间的形式,所以得再维护一下虚树信息(类比树套树分讨贡献即可)。

时间复杂度 \(O(n\log n)\)

HZTG 雪雀

首先考虑 \(O(n)\) 的单源最短路,注意到对于一列 \(a_{1,i},a_{3,i}\) 之间的最短路会恰好经过 \(a_{2,j}\) 一次,所以可以分讨是在 \(i\) 列的左右,预处理 \(f_i,g_i\) 分别表示只考虑 \([1,i],[i,n]\)\(a_{1,i},a_{3,i}\) 之间的最短路,转移形如 \(f_{i}=\min(f_{i-1},a_{2,i})+a_{1,i}+a_{3,i}\)

此时就能通过 \(f,g\) 数组 \(O(n)\) 求单源最短路了,具体的对于枚举的一个点 \((x,y)\) 此时能得知 \((1,x),(2,x),(3,x)\) 的最短路,考虑往两侧递推,分讨每个点最短路的转移方向(即上下左右),对于左右就可以使用 \(f,g\) 数组来更新。

此时得到 \(O(n^2)\) 的做法。

对于求所有路径的问题,考虑分治。

具体的设一层的分治中心为 \(mid\) ,每次解决 \([l,mid]\)\([mid+1,r]\) 之间的最短路。

考虑 \(u,v\) 之间的最短路只能是由

\(u\to(1,mid)\to(1,mid+1)\to v\)

\(u\to(2,mid)\to(2,mid+1)\to v\)

\(u\to(3,mid)\to(3,mid+1)\to v\)

\(A_{1/2/3}\) 表示 \(u\)\((1/2/3,mid)\) 的最短路,\(B_{1/2/3}\) 同理。

则最短路为 \(\min(A_1+B_1,A_2+B_2,A_3+B_3)\),考虑分讨经过 \((1,mid)\to(1,mid+1)\) 时边权的限制,应有 \(A_1+B_1\le A_2+B_2,A_1+B_1\le A_3+B_3\) 移项得 \(A_1-A_2\le B_2-B_1,A_1-A_3\le B_3-B_1\),变为二维偏序问题,1-side 扫描线,2-side 树状数组即可。

注意最短路相等的情况,此时钦定一个优先级,将一些 \(\le\to<\) 即可。

时间复杂度 \(O(n\log^2n)\)

HZTG 燕鸥

打表题 \(\dots\)

大致的就是打表找规律得到能单点单次 \(O(\log_3n)\) 查询做法。然后进一步发现只用查询 \(O(\log_3n)\) 个点即可。

时间复杂度 \(O(T\log_3^2n)\)

p

posted @   Qyun  阅读(98)  评论(7编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探
点击右上角即可分享
微信分享提示