【洛谷P1754 球迷购票问题】题解
卡特兰数经典 \(\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)\);左右对称。
于是得出递推式:
\]
朴素 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 球迷购票问题】题解的更多相关文章
- 洛谷 P1754 球迷购票问题
P1754 球迷购票问题 题目背景 盛况空前的足球赛即将举行.球赛门票售票处排起了球迷购票长龙. 按售票处规定,每位购票者限购一张门票,且每张票售价为50元.在排成长龙的球迷中有N个人手持面值50元的 ...
- 洛谷——P1754 球迷购票问题
题目背景 盛况空前的足球赛即将举行.球赛门票售票处排起了球迷购票长龙. 按售票处规定,每位购票者限购一张门票,且每张票售价为50元.在排成长龙的球迷中有N个人手持面值50元的钱币,另有N个人手持面值1 ...
- 洛谷P1783 海滩防御 分析+题解代码
洛谷P1783 海滩防御 分析+题解代码 题目描述: WLP同学最近迷上了一款网络联机对战游戏(终于知道为毛JOHNKRAM每天刷洛谷效率那么低了),但是他却为了这个游戏很苦恼,因为他在海边的造船厂和 ...
- 洛谷P4047 [JSOI2010]部落划分题解
洛谷P4047 [JSOI2010]部落划分题解 题目描述 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落 ...
- 洛谷P1155 双栈排序题解(图论模型转换+二分图染色+栈)
洛谷P1155 双栈排序题解(图论模型转换+二分图染色+栈) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1311990 原题地址:洛谷P1155 双栈排序 ...
- 【洛谷】P1754 球迷购票问题(基础dp)
题目背景 盛况空前的足球赛即将举行.球赛门票售票处排起了球迷购票长龙. 按售票处规定,每位购票者限购一张门票,且每张票售价为50元.在排成长龙的球迷中有N个人手持面值50元的钱币,另有N个人手持面值1 ...
- 洛谷10月月赛II题解
[咻咻咻] (https://www.luogu.org/contestnew/show/11616) 令人窒息的洛谷月赛,即将参加NOIp的我竟然只会一道题(也可以说一道也不会),最终145的我只能 ...
- [洛谷P1823]音乐会的等待 题解(单调栈)
[洛谷P1823]音乐会的等待 Description N个人正在排队进入一个音乐会.人们等得很无聊,于是他们开始转来转去,想在队伍里寻找自己的熟人.队列中任意两个人A和B,如果他们是相邻或他们之间没 ...
- BZOJ2527 & 洛谷3527:[Poi2011]Meteors——题解
+++++++++++++++++++++++++++++++++++++++++++ +本文作者:luyouqi233. + +欢迎访问我的博客:http://www.cnblogs.com/luy ...
随机推荐
- redis 2 主从和哨兵
主从: 概念:将一台redis服务器数据复制到其他redis服务器,前者是master,后者是slave.数据复制是单向,从主节点复制到从节点.master以写为主,slave以读为主一个zhu主节点 ...
- OpenStack 安装 Keystone
OpenStack 安装 Keystone 本篇主要记录一下 如何安装 openstack的 第一个组件 keystone 认证授权组件 openstack 版本 我选的是queens 版本 1.Op ...
- 3.0 vue以构造函数形式返回数据
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- awk应用场景之过滤举例
以/etc/passwd举例,passwd文本 [root@196 tmp]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bi ...
- vs 快速定位文件
在进行web开发时,我们经常需要在文件之间进行切换,每次在VS的解决方案中找文件然后打开 非常浪费时间,有没有比较快捷点的方法呢? 1.使用 ReSharper 插件 ReSharper 插件可以在 ...
- pandas:数据迭代、函数应用
1.数据迭代 1.1 迭代行 (1)df.iterrows() for index, row in df[0:5].iterrows(): #需要两个变量承接数据 print(row) print(& ...
- C++:数的变化
数的变化 时间限制 : 1.000 sec 内存限制 : 128 MB 题目描述: 小明给你提出了一个问题,即给出两个整数 a 和 b,每次操作可以 a+1 或 a×2,问至少进行多少次 ...
- 怎样生成分布式的流水ID
流水编号 日常在我们开发的过程中可能会用到编号的功能,如销售订单号,采购订单号,日志编号,凭证号...等等,为了保证唯一有些表的主键要么用自增长,要么用GUID值,或通过雪花ID算法生成.这此方式基本 ...
- yum源更换/新
参考:https://www.cnblogs.com/opsprobe/p/10673031.html
- E104-BT01超低功耗蓝牙模块BLE4.0协议的片载系统解决方案
1.E104-BT01简介 E104-BT01 是亿佰特设计生产的一款小体积的蓝牙模块,贴片型(引脚间距 1.27mm),自带高性能 PCB 板载天线.支持 BluetoothV4.0 标准,简单配置 ...