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

2025.10.14 正睿二十连测

正睿二十连测

B

赛场上花了 \(40min\) 写了个暴力。赛后看题解 \(20min\) + 写 \(30min\)

有多少个长度为 \(n\) 排列,使得 \(x(n - x + 1) \le m\)\(x\)\(n\) 的位置),答案对 \(p\) 取模。

\(f_n\) 表示长度为 \(n\) 的,满足条件的数量。枚举 \(n\) 的位置 \(i\),两边互不干扰且答案只与相对大小有关。可以列出转移:

\[f_n = \sum\limits_{i = 1}^n C_{n - 1}^{i - 1}f_{i - 1}f_{n - i}[i(n - i + 1) \le m] \]

暴力转移可以拿到 \(56pts\)


考虑优化!首先,若不考虑 \(x(n - x + 1) \le m\) 这个条件,\(f_n = n!\)

因为 \(f_{i - 1}, f_{n - i}\) 对称,不妨设 \(i - 1 \le n - i\)。观察一下转移,若 \(i(n - i + 1) \le m\) 都成立了,实际上对于 \(n = i - 1\) 是显然满足 \(x(n - x + 1) \le m\) 的,即 \(f_{i - 1} = (i - 1)!\)

那么转移就变成了 \(\sum\limits_{i = 1}^n (i - 1)!C_{n - 1}^{i - 1}f_{n - i}[i(n - i + 1) \le m] = (n - 1)!\sum\limits_{i = 1}^n [i(n - i + 1) \le m]\frac{f_{n - i}}{(n - i)!}\)

注意到满足 \(i \le n - i + 1\)\(i(n - i + 1) \le m\)\(i\) 是一段前缀,直接利用前缀和进行转移即可。

时间复杂度:\(O(n)\)

这个题难点在于转移的式子比较复杂,不好优化。发现 \(f_{i - 1}\) 一定是 \((i - 1)!\) 这个极其重要的性质后,转移简单了很多,使用前缀和优化即可。可惜没有找到这个性质。

http://www.hskmm.com/?act=detail&tid=31147

相关文章:

  • singleton_pattern
  • ai出题
  • Python的Numpy、Pandas和Matplotlib(随笔)
  • 财务怎样做到业财融合 - 智慧园区
  • CF2146E
  • Spring Boot项目中集成Spring Security OAuth2和Apache Shiro
  • 【博客导航】
  • 部署向量数据库milvus
  • 从 0 到 1 实现高性能日志库 MiniSpdlog — 这可能是最适合新手的日志系统实战项目 !
  • 思想惰性:警惕时代中的精神惯性
  • journalctl 查看服务日志
  • 对ssh修改源码过程
  • 低代码时代,企业机遇在哪里
  • 2025 年浙江专升本培训学校推荐榜:浙江/台州/萧山/温州专升本机构,聚焦学历提升需求,杭州泓涵培训学校为学子护航
  • 25noip20d2t2 马戏表演 - Slayer
  • 从后端转行为AI工程师,转行AI大模型开发,附全套学习资源!收藏这份指南! - 实践
  • 实验一:现代C++初体验
  • 2025秋_11
  • 软件工程学习日志2025.10.14
  • CF1784E
  • nSwitch 存档自动备份系统模块 - autoSAVE
  • java基础7-字符串
  • 乐云具身活动体验
  • 【技术解决方案】联邦学习中遇到的Non-IID问题——隐语SecretFlow
  • 学习笔记:KTT
  • 题解:P10104 [GDKOI2023 提高组] 异或图
  • 2025 年筛网厂家推荐榜:聚焦场景适配与高效需求,锰钢筛网/聚氨酯筛网/合金焊接筛网/自清洁筛网/防堵筛网厂家滨州沃森网业成优选
  • P7076 [CSP-S2020] 动物园
  • 汽车价格战全面熄火了?不卷价格该卷什么? - 教程
  • P10067 [CCO 2023] Real Mountains