把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end

题解 [AT_joisc2014_i][BZOJ4237]稻草人

传送门

题意

n 个节点,问有多少对节点满足一个在左下角,一个在右下角,且其中没有一个节点。

1n2×1050Xi1090Yi109

分析

我们可以先打暴力,O(n3)
暴力枚举每个点对,再枚举第三个点,观察是否有节点在这两个节点中间。

优化一

显然过不了,我们紧接着可以先对于 Xi 进行排序,然后用线段树维护在区间内的最大 X 值。
倘若两个点之间的 X 最大值大于我们枚举的前边的点,那么说明这个点对之间有另一个点。
时间复杂度 O(n2logn)

优化二(正解)

因为作者是个蒟蒻,CDQ 打的不流利,因此仍然选择了线段树。
我们可以用线段树维护最值,同时我们还可以维护在这个 Y 上方的节点所能得到的贡献。
现在的问题又变成了我们该如何合并两个区间。
很显然,我们的上方的区间的原有答案可以直接被我们的当前区间继承。
而我们的下方的区间,我们则可以继承大于等于我们上方区间最大值的点数。

时间复杂度 O(nlog2n)

Code

posted @   djh0314  阅读(8)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
浏览器标题切换
浏览器标题切换end
点击右上角即可分享
微信分享提示