P3200 [HNOI2009]有趣的数列

题目描述

P3200 [HNOI2009]有趣的数列
样例输入:3 10
样例输出:5

题解

看样例猜做法
大概猜一猜 观察到答案是卡特兰数列
接下来我们看看为什么是这样。

首先化简题目
对于一个 \(2*n\) 的排列,我们要求:
奇数位置上的数递增
偶数位置上的数递增
奇偶相邻位置数递增
奇怪的tip:偶奇相邻不用递增

首先假设我们把这 \(2n\) 个数一个个填进去 填到第 \(i\)
如果我们要填在偶数位 那么这个数必须比当前偶数大 也必须比上一位的奇数大
也就是说 这个数如果在偶数位上 需要比前 \(i-1\) 个数字都大
得出的结论是 如果这一位是偶数位 下标为 \(i\) 时的数字至少为 \(i\)

那么在奇数位上呢?
我们发现只要比前几个奇数大就可以了
也就是说 我们当前这个数一定可以填在第一个空白的奇数位上

所以题目变成了 对于长度为 \(2n\) 的序列
对于当前数 我们要么把他放在最大的偶数位上 要么把他放在最大的奇数位上
还要求奇数位的数字个数时刻大于等于偶数位
因为如果奇数位少一个 即偶数位多一个 无论下一个数往哪填 偶数位都没法大于当前的数

所以问题转化成了卡特兰数列

posted @ 2021-09-28 21:52  lzylzy/kk  阅读(36)  评论(0编辑  收藏  举报
浏览器标题切换
浏览器标题切换end