【catalan数】10076 - 凸多边形分割

【catalan数】10076 - 凸多边形分割

Time Limit: 1000MS
Memory Limit: 32768KB

这题不能用通项公式

我忘记了mod不支持除法

我忘记了mod不支持除法

 1 # include<cstdio>
 2 # include<iostream>
 3 using namespace std;
 4 const int maxn=250;
 5 typedef unsigned long long LL;
 6 LL f[maxn];
 7 int main(){
 8     LL n;cin>>n;
 9     f[2]=f[3]=1;
10     for(int i=4;i<=250;i++)
11     for(int j=2,k=i-1;j<=i-1;j++,k--)
12     f[i]=(f[i]+f[j]*f[k])%1234567;
13     printf("%d",f[n]);
14     return 0;
15 }//µÝÍÆ
时间: 2024-10-17 13:44:13

【catalan数】10076 - 凸多边形分割的相关文章

诡异的dp(凸多边形分割):catalan数

凸多边形分割 这道题拿道题没有一点思路.我一直在想如何把问题变小,然而一无所获(不是有漏项.就是有重复),最后不得不看了题解,发现这道dp题果然很诡异 设dp(i)表示i边形的方案个数 在一个i边形中,任取两个点,令一个点为1,一个点为i,那么其他点为2--i-1 在点集{2--i-1}中任取一个点k 那么连接k,1,n可以构成一个三角形 设上方区域为1区域三角形区域为2区域,下放区域为3区域 对于k说,设k左边为r变形,k右边为c变形 那么对于k这个点的分割方案,就是 dp(r)*dp(c)因

【64测试20161112】【Catalan数】【数论】【扩展欧几里得】【逆】

Problem: n个人(偶数)排队,排两行,每一行的身高依次递增,且第二行的人的身高大于对应的第一行的人,问有多少种方案.mod 1e9+9 Solution: 这道题由1,2,5,14 应该想到Catalan数,但是我却花了两个小时去找递推式. 首先 Catalan数 : 基本规律:1,2,5,14,42,132,.......... 典型例题: 1.多边形分割.一个多边形分为若干个三角形有多少种分法. C(n)=∑(i=2...n-1)C(i)*C(n-i+1) 2.排队问题:转化为n个人

关于Catalan数

问题的由来:编号为 1 到 n 的 n 个元素,顺序的进入一个栈,则可能的出栈序列有多少种? 对问题的转化与思考:n 个元素进栈和出栈,总共要经历 n 次进栈和 n 次出栈.这就相当于对这 2n 步操作进行排列.问题等价于:n个1和n个0组成一2n位的2进制数,要求从左到右扫描,1的累计数不小于0的累计数,试求满足这条件的数有多少? 解答: 设P2n为这样所得的数的个数. 在2n位上填入n个1的方案数为 C(n 2n)不填1的其余n位自动填以数0.从C(n 2n)中减去不符合要求的方案数即为所求

(转载)Catalan数——卡特兰数

Catalan数--卡特兰数 今天阿里淘宝笔试中碰到两道组合数学题,感觉非常亲切,但是笔试中失踪推导不出来后来查了下,原来是Catalan数.悲剧啊,现在整理一下 一.Catalan数的定义令h(1)=1,Catalan数满足递归式:h(n) = h(1)*h(n-1) + h(2)*h(n-2) + ... + h(n-1)h(1),n>=2该递推关系的解为:h(n) = C(2n-2,n-1)/n,n=1,2,3,...(其中C(2n-2,n-1)表示2n-2个中取n-1个的组合数) 问题描

Catalan数的部分应用

卡特兰数用于解决一些特定的排列问题,一般是求解有多少种排列.. Catalan数的定义: (1)当n=1时,C(1)=1. (2)当n>1时,C(n) = C(1)*C(n-1) + C(2)*C(n-2) + ... + C(n-1)*C(1) (3)当然,也可以这样算: (4)当然,还能这样算: (5)更厉害的,是可以这样算,只是不大准而已: (ps:这些都是经过证明的公式) 注:所有的奇卡塔兰数(即n为奇数)Cn都满足. 一般来说,求卡特兰数有个基本问题,而其他问题一般可以转成这个问题.这

Catalan数 &amp;&amp; 【NOIP2003】出栈序列统计

令h(1)=1, h(0)=1,catalan数满足递归式: h(n)=h(0)*h(n-1)+h(1)*h(n-2)+...+h(n-1)h(0) (n>=2) =C(2n, n)/(n+1) =h(n-1)*2(2n-1)/(n+1) 具体推导请百度,这里只需记得推导公式为h(n)=h(n-1)*2(2n-1)/(n+1)即可. 我们来说说这个的应用吧,从catalan数的定义递归定义可以看出,它是由自己 本身的一部分和n减去一部分 的和得到的,也就是说,有n个物品,1个物品进行操作1,n-

Catalan数

[问题描述]对于一个栈,已知元素的进栈序列,判断一个由栈中所有元素组成的排列的出栈序列. 有N个数,则代表入栈序列为1,2,3,4,5...,N.求所有可能的出栈序列和总数. 代码如下 #include<iostream> #include<vector> #include<algorithm> #include<string> #include<stdio.h> using namespace std; int N = -1; int sum

UVA 10312 - Expression Bracketing(数论+Catalan数)

题目链接:option=com_onlinejudge&Itemid=8&page=show_problem&problem=1253">10312 - Expression Bracketing 题意:有n个x,要求分括号,推断非二叉表达式的个数. 思路:二叉表达式的计算方法就等于是Catalan数的,那么仅仅要计算出总数,用总数减去二叉表达式个数.得到的就是非二叉表达式的个数. 那么计算方法是什么呢. 看题目中的图,对于n = 4的情况,能够分为这几种情况来讨论

UVA10303 - How Many Trees?(java大数+catalan数)

UVA10303 - How Many Trees?(java大数+catalan数) 题目链接 题目大意:给你1-N N个数,然后要求由这些数构成二叉搜索树,问有多少种这样的二叉搜索树. 解题思路:把前5项理出来,正好是1 2 5 14 42..就猜想是catalan数,结果也是对了.公式f(i + 1) = (4?i - 6)/ i; (i >= 2).结果很大,要用高精度. 代码: import java.util.*; import java.math.*; import java.io