P1722 矩阵 II
题目背景
usqwedf 改编系列题。
题目描述
如果你在百忙之中抽空看题,请自动跳到第六行。
众所周知,在中国古代算筹中,红为正,黑为负……
给定一个1*(2n)的矩阵(usqwedf:这不是一个2n的队列么),现让你自由地放入红色算筹和黑色算筹,使矩阵平衡[即对于所有的i(1<=i<=2n),使第1~i格中红色算筹个数大于等于黑色算筹]
问有多少种方案满足矩阵平衡。
见样例解释。
输入输出格式
输入格式:
正整数 n
输出格式:
方案数t对100取模
输入输出样例
说明
样例解释: 红 黑 红 黑
红 红 黑 黑
1<=n<=100
这个题跟物理老师和生物老师排队是一样的,物理老师前面的生物老师的个数不能超过物理老师,用卡特兰数
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define N 1010 using namespace std; int n,h[N]; int read() { int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar(); return x*f; } int main() { n=read();h[0]=h[1]=1; for(int i=2;i<=n;i++) for(int j=1;j<=i;j++) h[i]=(h[j-1]*h[i-j]%100+h[i])%100; printf("%d",h[n]); return 0; }