洛谷P1722 矩阵Ⅱ (卡塔兰数)
洛谷P1722 矩阵Ⅱ 卡塔兰数
- 题面
- 思路
- 代码
题面
给定一个1*(2n)的矩阵。现让你放入一样多的红色算筹和黑色算筹,使对于所有的i(1<=i<=2n),使第1~i格中红色算筹个数大于等于黑色算筹
(同P1044栈)
思路
记红为R
,黑为B
,输入n时的结果为Cn
画几个之后,发现这个问题具有子结构。
如n-1的情况可以通过在后面补一个RB
构成n的情况。
但若要推导递推公式,需要更确定的子结构划分。
注意,不能通过删去n情况的末尾两个形成n-1的情况,因为不知道n-1内是不是恰好有n-1个R和B
如情况RRRRR...BBBBB
(n个红,n个黑),结果是Cn,但删去末尾两个后得不到Cn-1
注意到最末的格子必为黑色,而且它前面未必是红,所以在划分的时候不应包含它。(完整的RB+完整的RB=完整的RB,完整的RB才可应用Ci递推)
现在序列中多余了一个红色的元素,也不应包含(和末尾B配对的R)。这样,剩下的部分就是完整部分。
配对RB列的种类数是Ci ,其中i是列长度
这种R有n-1个可能存在的位置,即1 ~ n-1,不同的情况符合加法原理
前面的RB列长0时,后面RB列长n-1(实际长度为2倍,这里说的是输入为相应规模的子问题)
以此类推
所以
ans=C0Cn−1+C1Cn−2+...+Cn−2C1+Cn−1C0ans=C_0C_{n-1}+C_1C_{n-2}+...+C_{n-2}C_1+C_{n-1}C_0 ans=C0Cn−1+C1Cn−2+...+Cn−2C1+Cn−1C0
这就是卡塔兰数定义
从小到大打表即可
这个过程和括号配对种数问题,栈出列种数问题是等价的,在寻找和末尾B配对的R时就应当发现了。
代码
#include <stdio.h>
#include<iostream>
using namespace std;
int C[105];
int main()
{ios::sync_with_stdio(false);C[0] = 1;C[1] = 1;C[2] = 2;for (int i = 3; i <=100 ; i++)//打表{for (int j = 0, k = i - 1;j <= i - 1;j++, k--) {C[i] += C[j] * C[k] % 100;}C[i] %= 100;//分步取模}int n;cin >> n;cout << C[n];return 0;
}
洛谷P1722 矩阵Ⅱ (卡塔兰数)相关推荐
- Catalan卡塔兰数
卡塔兰数 卡塔兰数是组合数学中一个常出现在各种计数问题中出现的数列.由以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名. 卡塔兰数的一般项公式为 另类递归式: h(n)=((4*n- ...
- 洛谷 P1129 矩阵游戏
洛谷 P1129 矩阵游戏 题目链接 题目描述 小 Q 是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个 n×n 黑白方阵进行(如同国际象棋一般,只是颜色是 ...
- 卡特兰数(卡塔兰数)
卡特兰数(卡塔兰数) 另附图一张: 来源:百度百科 典例: hdu 2067 小兔的棋盘 Problem Description 小兔的叔叔从外面旅游回来给她带来了一个礼物,小兔高兴地跑回自己的房间, ...
- C语言实现卡塔兰数catalan(附完整源码)
实现卡塔兰数catalan 实现卡塔兰数catalan完整源码(定义,实现,main函数测试) 实现卡塔兰数catalan完整源码(定义,实现,main函数测试) #include <stdio ...
- 洛谷 P3184 [USACO16DEC]Counting Haybales数草垛
洛谷 P3184 [USACO16DEC]Counting Haybales数草垛 题目描述 Farmer John has just arranged his NN haybales (1 \leq ...
- 信息学奥赛一本通 1316:【例4.6】数的计数(Noip2001) | 1914:【01NOIP普及组】数的计数 | 洛谷 P1028 [NOIP2001 普及组] 数的计算
[题目链接] ybt 1316:[例4.6]数的计数(Noip2001) ybt 1914:[01NOIP普及组]数的计数 洛谷 P1028 [NOIP2001 普及组] 数的计算 [题目考点] 1. ...
- 10.10做题——USACO1.2/洛谷1207回文平方数(Dual Palindromes)
first thing:我市杨家巷发生一起爆炸事故,死亡17人,愿逝者安息! second thing:明天NOIP初赛,RP++,排名–;分数++; third thing:好像USACO评测系统真 ...
- 【卡塔兰数】LeetCode 96. Unique Binary Search Trees
LeetCode 96. Unique Binary Search Trees 本博客转载自:http://www.cnblogs.com/grandyang/p/4299608.html Solut ...
- 卡塔兰数(Catalan Number)--动态规划(Dynamic Programming)
-卡塔兰数是组合数学中一个常在各种计数问题中出现的数列.以比利时的数学家欧仁·查理·卡特兰(1814–1894)命名.历史上,清朝数学家明安图(1692年-1763年)在其<割圜密率捷法> ...
最新文章
- Ansible03-管理变量、加密、事实
- App研发录读后总结(一)
- git 撤销提交的文件
- jQuery 获取页面元素的属性值
- 高效安全存储之选 佰维A3系列240G固态硬盘试用手记
- JavaScript 模块化编程(二):AMD规范
- 数据可视化常见的错误有哪些
- 新高考计算机学业水平考试,新高考对学业水平测试的要求
- HTML 两种对密码加密的方法
- Appium工作日记:Message: An element could not be located on the page using the given search parameters.
- Tr1 Function
- vue监听滚动到底部加载更多
- java 数字与英文字母相互转换
- wps.wrod.excel基本操作总结
- 数据库应用(mysql)数据库管理
- SDNU-多校训练赛2-[ABF]
- #NOIP1999#旅行家的预算
- 云米预计Q3营收同比下降三成,陈小平对未来增长没信心?
- 用 Node.js 手写一个 DNS 服务器
- index.php catid 什么程序,br/br/br/这段PHP代码是用什么加密的呢?怎? 爱问知识人...