当前位置: 首页 > news >正文

P9596 [JOI Open 2018] 冒泡排序 2 做题记录

P9596 [JOI Open 2018] 冒泡排序 2 做题记录

P9596 [JOI Open 2018] 冒泡排序 2 / Bubble Sort 2 - 洛谷 (luogu.com.cn)

Solution 1

结论:设 \(v_i=\sum_{j\le i} [a_j>a_i]\),序列 \(a\) 的代价为 \(\max\{v_i\}\)

对每个位置考虑,前面比它大的移到它后面之后才能轮到 \(i\) 向后移动,然后轮到它时后面如果有比它小的还需要移动一轮,所以 \(v_i=\sum_{j\le i} [a_j>a_i]+[a_i>(\min_{j>i} a_j)]\)

然后发现如果 \(i\) 后面有比它小的 \(i\) 一定不优,所以后面一项可以去掉,\(v_i=\sum_{j\le i} [a_j>a_i]\)

这个代价还是不好算,但由于只有后缀最小值有用,所以将 \(v_i\) 继续改为 \(\sum_{j=1}^n [a_j>a_i]-(n-i)\),这个就好维护了,上权值线段树即可。

Solution 2

结论:设 $a_i $ 排序后应该在的位置为 \(p_i\),则代价为 \(\max\{i-p_i\}\)

\(a_i\) 不是后缀最小值,那么它的 \(i-p_i\) 一定不优。

首先若 \(i<p_i\),那么它一定不会移动到 \(p_i\) 的右边,轮到它移动时一定已经归位,代价为 \(0\)

然后若 \(i>p_i\),那么前面比它大的位置向后移动时,一定恰好让它向前移动一个,轮到它移动时一定已经归位。

\(p_i\) 即为 \(a_i\) 在全局的排名,维护 \(i-p_i\) 的最大值,平衡树维护。

两个结论其实本质一样,殊途同归了。

http://www.jsqmd.com/news/33499/

相关文章:

  • 超级管理员目录索引的Google搜索技巧
  • 被称作永恒之物 在交替更迭中徒劳地缝补 被称作易逝之物 书写了十四行啼哭
  • 无限欢愉 深入推进 我沦陷在那片故地 我渴饮着 你的呼吸 却得不到 你的心
  • 【学术】数论分块保姆级教程
  • 基础架构
  • 2025数据库审计产品选型指南:十大厂商综合评测与趋势解析
  • Word表格1.5倍行距居中问题
  • 详细介绍:后端_Redis 分布式锁实现指南
  • 构建AI智能体:五十七、LangGraph + Gradio:构建可视化AI工作流的趣味指南 - 教程
  • 日总结 23
  • 详细介绍:基于Echarts+HTML5可视化数据大屏展示-车辆综合管控平台
  • 基于ollama和streamlit的聊天机器人
  • CSP-S 2025 T2 [道路建设]
  • 使用Git钩子+ husky + lint语法检查提高前端项目代码质量
  • [题解]P10277 [USACO24OPEN] Bessies Interview S
  • 关于 Java快速查找详细
  • 什么是Ansible 清单 - 详解
  • 完整教程:如何用开源软件
  • 第一次团队项目作业
  • 隨機變量本質之最終闡述
  • 足式机器人适应多地形的方案
  • 使用vLLM实测3090和4090的大模型推理性能
  • CF1700F Puzzle
  • Redis高可用与高并发探险之旅:从单机到集群的完美进化【第三部分】
  • UE:论运行时动画录制的关键-正确获取骨骼数据与保存
  • 线性基相关
  • 关于fcitx5预览窗口部分emoji乱码问题
  • a-menu 当设置折叠状态如何穿透悬浮菜单样式
  • attention论文及Transformer工作原理概述
  • kamailio+rtpengine对sdp的处理