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

牛客多校04C :Computational Geometry Problem(p-Dyck路计数)

题意

给你 N,M,KN,M,KN,M,K,你需要统计满足条件的序列 [A1,A2,...,ANM][A_1,A_2,..., A_{NM}][A1,A2,...,ANM] 的个数。
条件:

  1. [1,M][1,M][1,M] 中的每个整数恰好出现过 NNN
  2. 不存在abab的形式,即要么一个数包含另外一个数,要么一个数与另外一个数最左最右出现位置的连线没有交集
  3. Ai=Ai+1A_i=A_{i+1}Ai=Ai+1的个数恰好为 KKK

思路

这道题确实是一道比较难的数学题,因为题解写得看不懂,所以我让数学系的队友教我做了这道题。

首先是有 ttt 个峰,mmm 次下降的 p-Dyck 路的数量是

1m(mt)(pmt−1) \frac{1}{m}\binom{m}{t}\binom{pm}{t-1} m1(tm)(t1pm)

这里解释一下什么是 p-Dyck 路。

上升步 U 指的是向量 (1,1)(1,1)(1,1),下降步 D 指的是 (1,−p)(1,-p)(1,p),有一些定义是反过来的,但本质都是一样的,无非是从左往右看还是从右往左看罢了。

mmm 次下降就是指有 mmm 个 D,和 pmpmpm 个 U。峰就是指上升以后接着下降。

同时要求这个序列从原点出发任意前缀和都是在 xxx 轴的上方。

想要证明上面那一大坨组合数,还需要用到 Raney 引理:对于 a1,a2,...,ana_1,a_2,...,a_na1,a2,...,an,且 ∑i=1nai=1\sum_{i=1}^na_i=1i=1nai=1有且仅有一种移位方法(将左边若干个平移到最右边,并维持顺序不变)使得任何一个前缀和都 > 0。这非常显然,只需要画出折线,找到最右边的最小点作为开头即可。

为了能够运用 Raney 引理,需要多加一个 (1,1) 步,然后只需要令第一步走 (1,1) 就不会重复计数了。

因为限制了有且仅有 ttt 个峰,因此我们用 (mt)\binom{m}{t}(tm) 选择在哪 ttt个下降步前面安放上升步,注意后面可能会有几个多的下降步,这些并不会影响峰的个数。

然后就应该在每一个选择了的下降步前面放置上升步,显然至少放置一个,因此剩下了 pm+1−tpm+1-tpm+1t 个上升步可以自由分配(注意已经多放了一个上升步)到 ttt 组,根据插板法可以得知方案数为 (pm+1−t+(t−1)t−1)\binom{pm+1-t+(t-1)}{t-1}(t1pm+1t+(t1))

然后就是把每一个下降步到上一个下降步之前的上升步看成独立的一块,记改变值为 aia_iai,然后就可以直接套用 Raney 定理了。

接下来就要思考怎么样让原题的条件和 p-Dyck 路建立双射。

首先,肯定是不去考虑数的顺序,只用考虑形成的结构,然后最后乘上 m!m!m! 即可。

注意原题中的值为大写字母,p-Dyck 路中的是小写字母。

先考虑 ppp 的取值,比较明显应该要取 N−1N-1N1,因为空位刚好有 N−1N-1N1 个。

在这一道题中,我把上升和下降的步反过来看,也就是上升的步为 (1,p)(1,p)(1,p),下降的步为 (1,−1)(1,-1)(1,1),这样很明显和原来的条件是一样的。

如果只有一个数,那么形成的路应该为 UDD…D

如果让某一个数出现在这个数里面,那么应该如果出现第几个位置,就插在第几个 D 后面,比如N-1=4,就会是 UD(UDDDD)DDD,UDD(UDDDD)DD,UDDD(UDDDD)D 这样放置,这样我们就能清楚得到这个数插在哪个后面,而且可以确保如果插在某个数的中间可以使得峰的个数增加1。

既然插在中间的数会导致峰的个数增加1,那么并列的就不应该导致峰的增加,我想到的双射方法就是并列的有几个就先放几个U,然后后面就是一连串的D,然后在哪个D的后面插入U就能计算出是在哪一个数的哪一个位置插入的。

这种映射是双射的。

然后就可以得到:p=N−1,t=M(N−1)−K+1,m=Mp=N-1,t=M(N-1)-K+1,m=Mp=N1,t=M(N1)K+1,m=M

http://www.dtcms.com/a/389211.html

相关文章:

  • CMake+visual studio 2022 +qt6 , 从Linux平台移植到windows下平台开发
  • 大模型系列——Playwright MCP 可以复用 Chrome 登录态了
  • 三星S25 Edge 与iPhone 17 Air:最新对比
  • 电脑怎么连接wifi?【图文详解】笔记本电脑怎么连接无线wifi?笔记本电脑连不上wifi怎么办?
  • 设计模式-代理模式详解
  • 怎样让AI图生3D更加高质高效
  • Java 集合框架 Set 接口:实现类的底层数据结构与核心特点
  • 【大模型】使用Qwen-VL大模型进行验证码识别的完整指南
  • 深度学习体系化入门:从理论到实践的完整框架
  • 餐饮行业系统集成分享:OMS 订单数据推送ERP 核算
  • 深入剖析OpenHarmony ClearPlay DRM驱动:从HDI接口到动态加载的完整实现路径
  • [WesternCTF2018]shrine
  • 硬件 - RK3588部分(2) - 原理图 - 最小系统
  • Android进阶之路 - 从 URL Scheme 到 Deep Link 与 App Link
  • MySQL监控Shell脚本实战指南
  • 【Android】Jetpack Media3 如何播放音频文件 实现视频播放器
  • Android 开发 集成 uni 小程序,并实现相互通信
  • 【office】怎么设置第一章二级标题为1.1 1.2 1.3然后第二章为2.1 2.2 2.3这样子
  • JVM的垃圾回收机制(一次完整的GC流程)
  • 拥抱新一代 Web 3D 引擎,Three.js 项目快速升级 Galacean 指南
  • Linux 内核裁剪与功能扩展实验报告
  • Qt QVCandlestickModelMapper详解
  • LeetCode:20.旋转图像
  • 网络协议深度解析:从OSI七层模型到现代互联网通信的技术实战
  • 慈明学校以孝治家阳光家庭教育中心 学以致用践行以孝治家幸福万家
  • 开心实习之 深度学习之多层感知机
  • 前端构造数据格式及表格添加行
  • 深度学习-神经网络(上篇)
  • 【脑电分析系列】第18篇:传统机器学习在EEG中的应用 — SVM、LDA、随机森林等分类器
  • 理解长短期记忆神经网络(LSTM)