尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

题解:P4769 [NOI2018] 冒泡排序

题解:P4769 [NOI2018] 冒泡排序
📅 发布时间:2026/6/19 5:40:52

题意:定义一个排列是好的,当且仅当可以通过 \(\frac 1 2\sum_{i=1}^n|i-p_i|\) 次对相邻两个数的交换使得整个排列变成 \(1,2,\cdots n\)。给出一个排列 \(q\),求有多少个排列 \(p\) 满足他是好的且字典序大于 \(q\)。

做法:

首先我们先思考没有字典序大于 \(q\) 这个事情怎么做。

我们尝试去给一个排列是好的一个更好描述的充要条件,我们注意到,每个数一定不能走回头路。对于一个数 \(x\),如果有一个更大的数在他的前面,那么他必须向左走,否则向右的话这个数会被那个更大的数往左交换一次;如果有一个更小的数在他的后面,那他必须向右走。所以就要求这个排列里一定不能有长度 \(>2\) 的下降子序列,也就等同于该排列可以划分为不多于两个上升子序列。

那么就很容易想到一个 dp,\(dp_{i,j}\) 代表前 \(i\) 个数,并且目前的最大值为 \(j\),后面有多少种方案,注意这里有个隐藏限制就是 \(i\le j\)。

考虑如何转移,有两种方式,一种是选一个更大的数,一种是选小于 \(j\) 的,但是注意,如果选择第二种,那么就一定得选当前最小的数,否则之后填的时候最小的数会形成一个长度至少为三的下降子序列。

所以 \(dp_{i,j} = \sum\limits_{k=j}^n dp_{i+1,k}\)。

我们发现这个东西非常像在网格图上移动,所以我们考虑也放到网格图上算路径数量,类似 Catalan 的计数方法,可以得到 \(dp_{i,j} = \binom{2n-i-j-1}{n-i-1}-\binom{2n-i-j-1}{n-j-1}\)。

然后就是考虑有排列的限制怎么做,我们枚举一个前缀相等,第 \(p\) 位不相等,我们记 \(mx = \max\limits_{i=1}^{p-1}q_i,mn\) 为目前还没用过的最小的数,那么讨论:

  1. \(mn = q_p\),那么就意味着我们这里只能填 \(>mx\) 的,不可以填比 \(mx\) 更小的数,答案为 \(\sum\limits_{i=mx+1}^ndp_{p,i}\),注意到这个东西等于 \(dp_{p-1,mx+1}\) 可以预处理 \(O(1)\)。

  2. \(mn<q_p<mx\),此时还是可以填 \(>mx\) 的,但是因为这里填的不是 \(mn\) 但是又比 \(mx\) 小,所以 \(p+1,p+2,...n\) 这些位置因为有 \([1,p]\) 的前缀,再加上必须填 \(mn\),就不合法了,之后的就可以直接跳过计算。

  3. \(q_p \ge mx\),那么这里只要填大于 \(q_p\) 的都可以。

按上述过程计算即可

相关新闻

  • 详细介绍:内网后渗透攻击--域控制器安全(1)
  • 20250923
  • java面试笔试题大汇总 ~很全面收藏 - 详解

最新新闻

  • 网上登报遗失声明怎么弄?网上登报遗失要多少钱?
  • 如何扩展javascript-typescript-langserver:添加自定义语言功能完整指南
  • 跨省寄大件怎么省钱?2026快递物流比价攻略 - 快递物流资讯
  • 2026韶关放心贵金属回收,CCIC 中检授权收黄金回收铂金回收白银回收持证实体门店 - 中安检金银铂钻回收
  • 三步实现Windows安卓子系统完整体验:MagiskOnWSA终极指南
  • 如何在5分钟内用Python构建专业信用评分卡?scorecardpy终极指南

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号