2025 省选模拟 5

2025 省选模拟 5

枇杷树

拆贡献,推式子

考虑合并两颗树时哪些路径还未被计算,即 \(\sum_{i\in x}\sum_{j\in y}\operatorname{dis}(i,j)=size_y\sum_{i\in x}\operatorname{dis}(i,u)+size_x\sum_{i\in y}\operatorname{dis}(i,v)+size_xsize_yw\)

\(f_{o,v}=\sum_{i\in o}\operatorname{dis}(i,v)\) 分讨一下 \(v\in x\) 还是 \(v\in y\) 即可得到 \(f\) 关于 \(f,\operatorname{dis}\) 的递归式。

由于每个树上至多拥有 \(O(m)\) 个关键点 (每次操作至多会在一颗树上增加两个关键点),所以 \(f\) 的状态数是 \(O(m^2)\)\(\operatorname{dis}\) 的状态数是 \(O(m^3)\)

记忆化即可递归求解。

时间复杂度为 \(O(m^3)\)

上古遗迹

李超线段树,扫描线

考虑计算每一个关于 \(h_i\) 有意义的极大矩形的贡献。

即对于每一个 \(h_i\) 找到其所能达到的最左端 \(L_i\) ,最右端 \(R_i\),可以将一个矩形描述为一个三元组 \(\{L,R,h\}\)

分讨一下 \(ql,qr\)\(L,R\) 的关系。

  • \(L<ql\le R<qr\) 时,此时对于每一个询问找到包含它最大的 \(h\) 即可,按左端点排序后扫描线即可。

  • \(ql\le L\) 或者 \(qr\le R\) 时,由于这两个是等价的,以下讨论 \(ql\le L\)。对于每一个矩形的贡献是形如 \(h(\min(qr,R)-L+1)\) ,简单拆式子注意到这是两个一次函数复合而成的分段函数,可以李超线段树去维护,所以可以从右往左扫描线解决。

对于每一个询问对以上两种情况取 \(\max\) 即可。

时间复杂度 \(O(n\log^2n)\),瓶颈在于李超线段树区间插入线段。

吞天得手

主席树

考虑维护一些相同前缀的 endpos,选取最前的那一个(为了找到最小的下一个元素),找到在 endpos 后最小且最前的那一个元素作为基准,开始进行匹配,对于这些相同前缀的下一个只能匹配这个基准元素,为了不重不漏,所以都得找到最小且最前的那一个。预处理每个元素相同的下一个位置,即可挨个访问。

然后可以进入下个分层图继续匹配。

可以使用 std::multiset 维护这些前缀,查询最小最前可以使用主席树。

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

后记

明后天就是清北冬令营了,没能去有点遗憾(

祝 HZ 的各位都能超常发挥,拿一等约!

posted @   Qyun  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· 深度对比:PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
点击右上角即可分享
微信分享提示