洛谷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=C0​Cn−1​+C1​Cn−2​+...+Cn−2​C1​+Cn−1​C0​
这就是卡塔兰数定义
从小到大打表即可
这个过程和括号配对种数问题,栈出列种数问题是等价的,在寻找和末尾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 矩阵Ⅱ (卡塔兰数)相关推荐

  1. Catalan卡塔兰数

    卡塔兰数 卡塔兰数是组合数学中一个常出现在各种计数问题中出现的数列.由以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名. 卡塔兰数的一般项公式为  另类递归式:  h(n)=((4*n- ...

  2. 洛谷 P1129 矩阵游戏

    洛谷 P1129 矩阵游戏 题目链接 题目描述 小 Q 是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个 n×n 黑白方阵进行(如同国际象棋一般,只是颜色是 ...

  3. 卡特兰数(卡塔兰数)

    卡特兰数(卡塔兰数) 另附图一张: 来源:百度百科 典例: hdu 2067 小兔的棋盘 Problem Description 小兔的叔叔从外面旅游回来给她带来了一个礼物,小兔高兴地跑回自己的房间, ...

  4. C语言实现卡塔兰数catalan(附完整源码)

    实现卡塔兰数catalan 实现卡塔兰数catalan完整源码(定义,实现,main函数测试) 实现卡塔兰数catalan完整源码(定义,实现,main函数测试) #include <stdio ...

  5. 洛谷 P3184 [USACO16DEC]Counting Haybales数草垛

    洛谷 P3184 [USACO16DEC]Counting Haybales数草垛 题目描述 Farmer John has just arranged his NN haybales (1 \leq ...

  6. 信息学奥赛一本通 1316:【例4.6】数的计数(Noip2001) | 1914:【01NOIP普及组】数的计数 | 洛谷 P1028 [NOIP2001 普及组] 数的计算

    [题目链接] ybt 1316:[例4.6]数的计数(Noip2001) ybt 1914:[01NOIP普及组]数的计数 洛谷 P1028 [NOIP2001 普及组] 数的计算 [题目考点] 1. ...

  7. 10.10做题——USACO1.2/洛谷1207回文平方数(Dual Palindromes)

    first thing:我市杨家巷发生一起爆炸事故,死亡17人,愿逝者安息! second thing:明天NOIP初赛,RP++,排名–;分数++; third thing:好像USACO评测系统真 ...

  8. 【卡塔兰数】LeetCode 96. Unique Binary Search Trees

    LeetCode 96. Unique Binary Search Trees 本博客转载自:http://www.cnblogs.com/grandyang/p/4299608.html Solut ...

  9. 卡塔兰数(Catalan Number)--动态规划(Dynamic Programming)

    -卡塔兰数是组合数学中一个常在各种计数问题中出现的数列.以比利时的数学家欧仁·查理·卡特兰(1814–1894)命名.历史上,清朝数学家明安图(1692年-1763年)在其<割圜密率捷法> ...

最新文章

  1. python编程下载安卓版-python编程入门
  2. STL标准库-容器-set与map
  3. iOS高级-RunLooper
  4. IntelliJ IDEA for Mac 如何将普通 Java 项目变为 Web 项目
  5. css scroll属性_CSS中的scroll-behavior属性
  6. StarkSoft题库管理系统(二)--生成word格式试卷
  7. CKEditor 4 编辑器已与 Vue.js 集成
  8. 互联网公司面试必问的mysql题目
  9. [SDOI 2011]黑白棋
  10. 零基础计算机编程入门自学需要什么条件
  11. android.net.http.AndroidHttpClient Android6.0 API23以后失效
  12. “Kindle App中文字体9MB下载失败”解决办法
  13. MySQL临时表详细解释
  14. 笔记本电脑怎么设置wifi热点共享
  15. 初识Web与HTML
  16. 国王学院计算机科学,伦敦大学国王学院计算机科学本科.pdf
  17. AI时代,与其恐惧,不如拥抱。
  18. 无人驾驶系统是个复杂的计算机系统,无人驾驶汽车安全行驶的三大系统
  19. 设计高并发架构与系统多级缓存架构如何设计?
  20. echarts 折线图 设置y轴最小刻度_用plotly和plt画图的基本设置(标题、坐标轴、图例、注释、图像)...

热门文章

  1. centos 7 查看内网ip和外网ip
  2. go int占多少字节
  3. 添加 lepton 3.5 USB许可让libuvc可以识别 FLIR 的raw image
  4. Mobox 知识管理平台助推市长质量奖
  5. 关于计算机word操作经验总结,计算机word学习心得.doc
  6. C语言的三种基本结构
  7. NLP 学习笔记 3: Data preparation, tokenization, and filtering.
  8. 三分钟springboot整合dubbo3(二)(Triple协议流式调用)
  9. 开方在java中怎么计算_不使用java JDK已有的API实现任意数字的开方
  10. 24岁的东软医疗:一部浓缩版的中国医疗装备发展史