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

洛谷 P12865

给定长度为 \(n\) 的序列 \(a\)\(q\) 次操作。每次操作为对 \(a\) 进行一次冒泡排序(\(a_i > a_{i + 1}\) 时交换)或者查询 \(a_l \sim a_r\) 之和。

对于一次冒泡排序,显然会把最大值挪到最后面。所以,当 \(a_1 \sim a_i\) 做完冒泡排序后,\(a’_i \leftarrow \max\limits_{j = 1} ^ i a_j\),再和 \(a_{i + 1}\) 进行比较,尝试交换。

因此得到一个结论:一次冒泡排序后 \(a’_1 \sim a_i\) 一定是原来 \(a_1 \sim a_{i + 1}\)最小的 \(i\) 个。

再尝试考虑两次冒泡排序。对于 \(i + 1\) 来说,\(a'_1 \sim a'_i\)\(a_1 \sim a_{i + 1}\) 中小的 \(i\) 个;\(a'_1 \sim a'_{i + 1}\)\(a_{1} \sim a_{i + 2}\) 中小的 \(i + 1\) 个。说明什么?说明 \(a'_{i + 1}\)\(a_1 \sim a_{i + 1}\) 中最大的与 \(a_{i + 2}\) 之间小的那个。所以经过两次冒泡后 \(a''_{1} \sim a''_{i}\)\(a_1 \sim a_{i + 2}\) 中小的 \(i\) 个。

这是我们就可以得(猜)到一个结论:经过 \(c\) 次冒泡排序后,\(a_1 \sim a_{i}\)\(a_{1} \sim a_{i + c}\) 中最小的 \(i\) 个。

换个角度,因为一次冒泡一个元素知道只能向左移一次,所有考虑的范围也就是 \(a_1 \sim a_{i + c}\) 了。

做到这里,这个题就差不多了,\(a_1 \sim a_i\)用主席树搞一下 ,\(a_{l} \sim a_r\) 前缀和减一下即可。

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

相关文章:

  • ubuntu清理内存缓存
  • ubuntu常用技巧
  • 单线程如何撑起百万连接?I/O多路复用:现代网络架构的基石
  • 10.17 CSP-S模拟33 改题记录
  • 包装类(基本数据类型对应的引用数据类型)
  • luogu P7915 [CSP-S 2021] 回文
  • 字典树 Trie 乱讲
  • 系统稳定性监控
  • USACO 绿-蓝 思维题小记
  • Day16-C:\Users\Lenovo\Desktop\note\code\JavaSE\Basic\src\com\classlei
  • 一个实用的短视频脚本创作指令分享
  • redis和mysql之间的数据一致性
  • ubuntu允许root登录桌面系统
  • 申威(sw_64)架构下如何安装java-1.8.0-swjdk的rpm包?​
  • AI协科学家:技术革命还是安全噩梦?
  • 一个决定
  • 详细介绍:k8s部署前后分离架构微服务——跨域和缓存问题
  • npm镜像配置
  • 实用指南:计算机毕设java基于mybatis的医用器械管理系统 基于 SSM+JavaWeb 的医用器械全流程管理平台 Java+MySQL 的医疗物资一体化系统
  • 一些特性
  • 央链知播受权发布:图说《“可信资产 IPO + 数链金融 RWA” 链改 2.0 六方共识》 - 详解
  • AGC 板刷记录1
  • 2025.10.17总结
  • 记Windows 11环境Rust下载安装配置流程
  • K8s学习笔记(九) job与cronjob - 教程
  • [HZOI]CSP-S模拟33
  • [PaperReading] VLM2Vec-V2: Advancing Multimodal Embedding for Videos, Images, and Visual Documents
  • 通用UI界面设计
  • ffmpeg使用
  • 2025.10.17总结 - A