zoukankan      html  css  js  c++  java
  • luogu P1722 矩阵 II |卡特兰数列

    题目背景

    usqwedf 改编系列题。

    题目描述

    如果你在百忙之中抽空看题,请自动跳到第六行。

    众所周知,在中国古代算筹中,红为正,黑为负……

    给定一个1*(2n)的矩阵(usqwedf:这不是一个2n的队列么),现让你自由地放入红色算筹和黑色算筹,使矩阵平衡[即对于所有的i(1<=i<=2n),使第1~i格中红色算筹个数大于等于黑色算筹]

    问有多少种方案满足矩阵平衡。

    见样例解释。

    输入格式

    正整数 n

    输出格式

    方案数t对100取模


    把红看成入栈,黑看成出栈,即为保证栈不为空

    用卡特兰数求出栈方案

    数据比较小,可以打表

    #include<cstdio>
    #include<iostream>
    using namespace std;
    const int N=115,mod=100;
    #define int long long
    int dp[N],n;
    signed main(){
    	cin>>n;
    	dp[0]=1;dp[1]=1;dp[2]=2;
    	for(int i=3;i<=n;i++){
    		int j=0;
    		while(j<=i-1){
    			dp[i]+=dp[j]*dp[i-1-j];
    			dp[i]%=mod;
    			j++;
    		}
    	}
    	cout<<dp[n]<<endl;
    }
    
    #include<cstdio>
    #include<iostream>
    using namespace std;
    const int N=115,mod=100;
    #define int long long
    int dp[N]={1,1,2,5,14,42,32,29,30,62,96,86,12,0,40,45,70,90,0,90,20,20,40,50,24,52,52,4,60,68,4,9,98,10,64,62,92,64,0,90,20,20,40,0,40,20,20,90,0,72,56,56,12,80,24,72,12,64,80,12,96,36,12,25,50,50,0,50,0,0,0,50,0,0,40,20,20,40,0,30,40,40,80,0,40,20,20,40,0,0,0,0,0,0,0,50,0,0,0,40,20},n;
    signed main(){
    	int n;
    	cin>>n;
    	cout<<dp[n]<<endl;
    }
    
  • 相关阅读:
    jqmodal遮罩层的实现
    让Editplus和SVN集成
    asp.net很有用的字符串操作类
    TCP socket编程
    Adroid: ProgressBar 的使用
    在想的事情......
    I'm new to CNBlogs!
    压力
    开心工作
    feature
  • 原文地址:https://www.cnblogs.com/naruto-mzx/p/11726460.html
Copyright © 2011-2022 走看看