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

25noip20d2t2 马戏表演 - Slayer

noip20d2t2

因为笨 写的详细一点。

题意

给定 n,m,对于长为 n 的排列 a,\(cnt_i=\sum_{1\leq l\leq i\leq r\leq n}[\max_{j=l}^r a_j=a_i]\)。求有多少排列 a 满足所有 \(cnt_i\) 都小于等于 m,答案对质数 p 取模。


题解

$ \text{cnt}_i $  是 “所有包含 i 的区间  $ [l, r] $  中,最大值为  $ a_i $ (即 M)” 的区间数量。

区间的左端点 l 可以选  $ 1 \sim i $ (共 i 种选择);

区间的右端点 r 可以选  $ i \sim n $ (共  $ n - i + 1 $  种选择)。

因此,满足条件的区间总数为 l 的选择数  $ \times $  r 的选择数,即: $ cnt_i = i \times (n + 1 - i) $

对于长度为 i 的排列,设全局最大值的位置为 p( $ 1 \leq p \leq i $ ),则该位置的  $ \text{cnt}_p = p \cdot (i - p + 1) $ (左端点有 p 种选法,右端点有  $ i - p + 1 $  种选法)。

函数  $ p \cdot (i - p + 1) $  是关于 p 的二次函数(开口向下),其最大值出现在  $ p \approx \frac{i+1}{2} $  时。

此时最大值为: $ \max_{p} \left( p \cdot (i - p + 1) \right) = \lceil \frac{i}{2} \rceil \cdot \left( i - \lceil \frac{i}{2} \rceil + 1 \right) $

条件  $ \lceil \frac{i}{2}\rceil \cdot (i - \lceil \frac{i}{2}\rceil + 1) \leq m $  表示:长度为i的排列中,全局最大值位置的最大可能 $ \text{cnt} $ 不超过 m 。

根据之前的结论:若全局最大值的 $ \text{cnt} $ 不超过m,则其两侧的子排列(左侧 $ [1, p-1] $ 和右侧 $ [p+1, i] $ )是 “天然合法” 的 —— 即子排列中所有位置的 $ \text{cnt} $ 必然都不超过 m(因为子排列的最大 $ \text{cnt} $ 小于全局最大值的 $ \text{cnt} $ )。

由于全局最大值的最大可能 $ \text{cnt} $ 已不超过m,且两侧子排列天然合法,因此任意长度为 i 的排列都满足 “所有位置的 $ \text{cnt} $ 不超过 m”。而长度为i的排列总数为  $ i! $ ,故此时  $ f_i = i! $ 。


若全局最大值位置合法,需:从剩下的  $ n-1 $  个数中选 i 个,排列到 “更短的子排列” 中(选法数为  $ \binom{n-1}{i} \cdot i! = \frac{(n-1)!}{(n-i)!} $ ,其中  $ \binom{n-1}{i} $  是选数, $ i! $  是子排列的排列方式);剩下的  $ n-i $  个数构成 “更长的子排列”,其合法数为  $ f_{n-i} $ (子排列的合法性与元素相对大小有关,递归求解)。

对所有可能的 “更短侧长度 i”,累加 “选数 + 子排列合法” 的情况,并乘 2(对称情形),得到: $ f_n = 2 \sum_{i=1}^{\lfloor n/2 \rfloor} \left[ i(n+1-i) \leq m \right] \cdot \frac{(n-1)!}{(n-i)!} \cdot f_{n-i} $

可以移个项。用个 \(h_i=\frac{f_i}{i!}\) 代码好看点。

https://zhengruioi.com/submission/973679

数组要开够。

http://www.zskr.cn/news/21104.html

相关文章:

  • 完整教程:port trunk pvid vlan vlan-id 概念及题目
  • CF1784E
  • nSwitch 存档自动备份系统模块 - autoSAVE
  • 2025 年筛网厂家推荐榜:聚焦场景适配与高效需求,锰钢筛网/聚氨酯筛网/合金焊接筛网/自清洁筛网/防堵筛网厂家滨州沃森网业成优选
  • 先辈题解
  • 双指针的初步了解
  • 倍增并查集学习笔记
  • ZR 2025 NOIP 二十连测 #1
  • work1
  • 分布式秒杀系统设计方案 - 实践
  • 完整教程:面向.NET开发者:Prosys OPC UA .NET SDK 全面解析
  • 安装devc++过程的分享以及问题的记录
  • zlog1
  • DBA | MySQL 数据库基础用户和信息权限管理实践
  • 2025 年生态格宾网厂家推荐榜:格宾网石笼/格宾网护坡/格宾网挡墙/格宾网网箱厂家推荐,聚焦工程安全与生态保护,助力基建项目高效落地
  • Flink 有状态流处理State、Keyed State、Checkpoint、对齐/不对齐与生产实践 - 实践
  • C++STL之stack,queue与容器适配器 - 教程
  • 2025年氧化镁厂家最新推荐排行榜,电工级/高温/低温/中温/防火电缆/矿物绝缘/熔盐加热器/电热管用/单头管用/合成云母用氧化镁公司推荐!
  • 智能体分析
  • C#——方法的定义、调用与调试 - 详解
  • Redis:高性能内存数据库的六大核心优势 - 教程
  • 2025年聚合硫酸铁供应厂家如何选?行业权威指南与成本控制策略?
  • MCP信任遭遇首次野外攻击:通过仿冒Postmark连接器窃取邮件
  • Hyperbeat Earn 套利指南:新手也能玩转 DeFi 赚钱术
  • 如何在AutoCAD中管理GIS属性表?
  • 详细介绍:跨平台UMEDITOR如何实现Word/Excel/PPT的统一格式管理?
  • 2025 年迷你仓厂家行业选购指南:安东易/小型/微型/商用/搬家/装修/电商/恒温迷你仓厂家,聚焦安全与灵活,这份优质厂商推荐榜请收好
  • 连锁餐饮拓展微信业务:试错 3 个月,终于找到靠谱方案
  • 从零开始掌握 uv:新一代超快 Python 项目与包管理器(含 Windows 支持) - 实践
  • HyperWorks许可证与其他软件的卓越集成