卡特兰数经典 \(\texttt{AB}\) 分拆问题。

分析:

题意相当于排列 \(n\) 个 \(\texttt A\) 和 \(n\) 个 \(\texttt B\),使得相邻 \(\texttt{AB}\)(有序!)消掉,然后左右元素并到一起再消,最后消完的序列个数。

设 \(\texttt{AB}\) 为一个组“1”,\(\texttt{AB}\) 自嵌套一次为一个组“2”(即 \(\texttt{AABB}\)),以此类推。

后面大多数数字指组“数字”

题意即转换为一个数 \(n\),求 \(n\) 分解成若干个正整数之和的方案数。

神犇到这一步就可以切掉了吧。

我们这里考虑隔板法:

两个 \(1\) 当然可以合并 \(2\)(\(=1+1\)),\(a\) 和 \(b\) 当然可以合并 \(a+b\),问题转换为有 \(n\) 个 \(1\) 有多少种合并方案。

设 \(n\) 个数的方案数为 \(f(n)\)。

考虑将 \(f(n)\) 分解为 \(f(x_0+y_0)\)。

使用隔板:

  • 当隔板在最左侧时,\(x_0=0\),\(f(0)=1\);\(y_0=n\),因为要求合并,所以有 \(n-1\) 种,由乘法原理知,此步答案为 \(f(0)f(n-1)\)。
  • 隔板向右移动一格,\(x_0=1\),也就是 \(f(1)\);\(y_0=n-1\),同理是 \(n-2\) 种,由乘法原理知,此步答案为 \(f(1)f(n-2)\)。
  • \(\dots\)
  • 归纳一下,第 \(i\) 步为 \(f(i)f(n-i-1)\)。
  • 最后一步显然是 \(f(n-1)f(0)\);左右对称。

于是得出递推式:

\[f(n)=f(0)f(n-1)+f(1)f(n-2)+f(2)f(n-3)+\dots+f(i)f(n-i-1)+\dots+f(n-1)f(0)
\]

朴素 dp 即可:

#include<iostream>
using namespace std;
const int N=25;
typedef long long ll;
ll n,dp[N];
int main()
{
cin>>n;
dp[0]=1;
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
dp[i]+=dp[j-1]*dp[i-j];
cout<<dp[n];
return 0;
}

但是在深入一步,会发现 \(f(n)=f(0)f(n-1)+f(1)f(n-2)+f(2)f(n-3)+\dots+f(i)f(n-i-1)+\dots+f(n-1)f(0)\) 的这个 \(f(n)\) 正好就是卡特兰数 \(C_n\),这个公式正好是一个卡特兰数的递推式。

【洛谷P1754 球迷购票问题】题解的更多相关文章

  1. 洛谷 P1754 球迷购票问题

    P1754 球迷购票问题 题目背景 盛况空前的足球赛即将举行.球赛门票售票处排起了球迷购票长龙. 按售票处规定,每位购票者限购一张门票,且每张票售价为50元.在排成长龙的球迷中有N个人手持面值50元的 ...

  2. 洛谷——P1754 球迷购票问题

    题目背景 盛况空前的足球赛即将举行.球赛门票售票处排起了球迷购票长龙. 按售票处规定,每位购票者限购一张门票,且每张票售价为50元.在排成长龙的球迷中有N个人手持面值50元的钱币,另有N个人手持面值1 ...

  3. 洛谷P1783 海滩防御 分析+题解代码

    洛谷P1783 海滩防御 分析+题解代码 题目描述: WLP同学最近迷上了一款网络联机对战游戏(终于知道为毛JOHNKRAM每天刷洛谷效率那么低了),但是他却为了这个游戏很苦恼,因为他在海边的造船厂和 ...

  4. 洛谷P4047 [JSOI2010]部落划分题解

    洛谷P4047 [JSOI2010]部落划分题解 题目描述 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落 ...

  5. 洛谷P1155 双栈排序题解(图论模型转换+二分图染色+栈)

    洛谷P1155 双栈排序题解(图论模型转换+二分图染色+栈) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1311990 原题地址:洛谷P1155 双栈排序 ...

  6. 【洛谷】P1754 球迷购票问题(基础dp)

    题目背景 盛况空前的足球赛即将举行.球赛门票售票处排起了球迷购票长龙. 按售票处规定,每位购票者限购一张门票,且每张票售价为50元.在排成长龙的球迷中有N个人手持面值50元的钱币,另有N个人手持面值1 ...

  7. 洛谷10月月赛II题解

    [咻咻咻] (https://www.luogu.org/contestnew/show/11616) 令人窒息的洛谷月赛,即将参加NOIp的我竟然只会一道题(也可以说一道也不会),最终145的我只能 ...

  8. [洛谷P1823]音乐会的等待 题解(单调栈)

    [洛谷P1823]音乐会的等待 Description N个人正在排队进入一个音乐会.人们等得很无聊,于是他们开始转来转去,想在队伍里寻找自己的熟人.队列中任意两个人A和B,如果他们是相邻或他们之间没 ...

  9. BZOJ2527 & 洛谷3527:[Poi2011]Meteors——题解

    +++++++++++++++++++++++++++++++++++++++++++ +本文作者:luyouqi233. + +欢迎访问我的博客:http://www.cnblogs.com/luy ...

随机推荐

  1. 1903021121-刘明伟-java第七周作业-客户类测试

    项目 内容 课程班级博客链接 19信计班(本) 作业要求链接 作业要求链接 博客名称 1903021121-刘明伟-java第七周作业-客户类测试 要求 每道题要有题目,代码,截图 第一部分: 创建客 ...

  2. mybatis xml 中 trim 多余的符号

    <if test="(mac != null and mac != '') or (roomNo != null and roomNo != '') or (bedNo != null ...

  3. 学习Java的第十五天——数学运算

    学习内容:数学运算 1.三角函数运算 代码实现: public class 三角函数运算 { public static void main(String[] args) { // TODO 自动生成 ...

  4. bind-utils-测试域名解析

    bind-utils是一个网络管理类工具集,其集成了我们常用的命令"nslookup",我们可以使用诊断域名解析情况. 1.安装bind-utils [root@localhost ...

  5. ES6 Promise 的链式调用

    1.什么是Promise Promise 对象代表了未来将要发生的事件,用来传递异步操作的消息. 2.对象的状态不受外界影响.Promise 对象代表一个异步操作,有三种状态: pending: 初始 ...

  6. 【Azure 应用服务】NodeJS Express + MSAL 应用实现AAD集成登录并部署在App Service Linux环境中的实现步骤

    问题描述 实现部署NodeJS Express应用在App Service Linux环境中,并且使用Microsoft Authentication  Library(MSAL)来实现登录Azure ...

  7. Number.prototype.toString()方法

    Number.prototype.toString(radix)方法返回指定基数对应Number的字符串值 radix可选参数,值范围为2~36,转化基数,如果未指定,默认值为10,如果radix值不 ...

  8. OAuth2学习中的一些高频问题的QA

    关于OAuth2相信很多初学者都有一些疑问,胖哥将这些疑问一一收集了起来做成了QA,或许能帮助学习者. OAuth2相关的QA Q:OAuth2 的一些常用场景? A: OAuth2主要用于API授权 ...

  9. ShardingSphere-proxy-5.0.0分布式雪花ID生成(三)

    一.目的 保证在分库分表中每条数据具有唯一性 二.修改配置文件config-sharding.yaml,并重启服务 # # Licensed to the Apache Software Founda ...

  10. 安装typescript环境并开启VSCode自动监视编译ts文件为js文件

    一.前言 小编最近开始学习typescript,懂得人都知道,typescript是vue3的基础伴生,配合更加默契.就像vue2和js一样!typescript不像js那样浏览器直接可以解读,需要我 ...