P1110题解

首先我们考虑第一种情况怎么处理,显然我们可以给原数列的每个数开一个vector,每加一个数丢到对应的vector后面就行了。

再看第二个操作,你考虑新加一个数会有什么影响。
原来的两个vector是这样的:
image
新加一个数进去以后:
image
原来的|yx|要删除,新增了|xz||zy|,我们直接用一个fhqtreap维护任意相邻两项的差,每次只需要删除一个,增加两个,复杂度是对的。

最后是第三个操作,考虑新加一个数组单独给所有数排序,新加入一个数先二分找到插入位置,再新增两个差值,用另一个fhqtreap维护,而且不用删掉原来的。

为什么明明插入一个数,原来两边的差值没有了却不用删除呢?

这是显然的,如果它一开始就不是最优的当然不用管,如果是最优的,中间差一个数结果也不会更劣。

总结:这题的难度在于码力


__EOF__

本文作者星河倒注
本文链接https://www.cnblogs.com/wangwenhan/p/17636207.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   星河倒注  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示