洛谷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. Ansible03-管理变量、加密、事实
  2. App研发录读后总结(一)
  3. git 撤销提交的文件
  4. jQuery 获取页面元素的属性值
  5. 高效安全存储之选 佰维A3系列240G固态硬盘试用手记
  6. JavaScript 模块化编程(二):AMD规范
  7. 数据可视化常见的错误有哪些
  8. 新高考计算机学业水平考试,新高考对学业水平测试的要求
  9. HTML 两种对密码加密的方法
  10. Appium工作日记:Message: An element could not be located on the page using the given search parameters.
  11. Tr1 Function
  12. vue监听滚动到底部加载更多
  13. java 数字与英文字母相互转换
  14. wps.wrod.excel基本操作总结
  15. 数据库应用(mysql)数据库管理
  16. SDNU-多校训练赛2-[ABF]
  17. #NOIP1999#旅行家的预算
  18. 云米预计Q3营收同比下降三成,陈小平对未来增长没信心?
  19. 用 Node.js 手写一个 DNS 服务器
  20. index.php catid 什么程序,br/br/br/这段PHP代码是用什么加密的呢?怎? 爱问知识人...

热门文章

  1. java 字符流图片_java 字节流、字符流(复制图片、复制文本)
  2. Proteus8.11的卸载与安装
  3. C#数据结构-约瑟夫问题
  4. mmorpg游戏,如何具体搭载游戏
  5. 阿里云服务器centos7配置Python Django项目
  6. Android Runnable
  7. windows系统切换node版本
  8. AD如何画槽型孔焊盘
  9. 堡垒(fortress)
  10. vue目录树组件(树状结构列表)