【递推】【卡特兰数】CODEVS 3134 Circle

新GET了一种卡特兰数的应用……

在一个圆上,有2*K个不同的结点,我们以这些点为端点,连K条线段,使得每个结点都恰好用一次。在满足这些线段将圆分成最少部分的前提下,请计算有多少种连线的方法。

不会证明,当结论记住吧。

f(i)=f(i-1)*(4*n-2)/(i+1) (2<=i<=k) (f(1)=1)

 1 #include<cstdio>
 2 using namespace std;
 3 long long f[31]; int k;
 4 int main()
 5 {
 6     scanf("%d",&k); f[1]=1;
 7     for(int i=2;i<=k;i++) f[i]=f[i-1]*(4*i-2)/(i+1);
 8     printf("%lld ",f[k]); printf("%d\n",k+1);
 9     return 0;
10 }
时间: 2024-08-13 23:02:46

【递推】【卡特兰数】CODEVS 3134 Circle的相关文章

NPU 2015年陕西省程序设计竞赛网络预赛(正式赛)F题 和谐的比赛(递推 ||卡特兰数(转化成01字符串))

Description 今天西工大举办了一场比赛总共有m+n人,但是有m人比较懒没带电脑,另外的n个人带了电脑.不幸的是,今天机房的电脑全坏了只能用带的电脑,一台电脑最多两人公用,确保n>=m.但是大家来的时间不同,随机次序来机房,带电脑的人直接准备比赛而没带电脑的人需要向带电脑并还没和别人公用的人求助(当然会答应).但是,如果不存在带电脑并还没和别人公用的人,那他就要等了,等是很让人头疼的,这就不和谐了,当然假如没有这样的情况发生比赛是很和谐的. Input 输入多组数据,每组数据只有一行m(

递推3--位数问题

递推3--位数问题 一.心得 问题想清楚 注意边界 二.题目及分析 三.代码及结果 方法一:排列组合 1 /* 2 位数问题 : 3 在所有的n位数中,有多少个数中有偶数个数字3? 4 5 方法一: 6 排列组合 7 n位数中有x个三的情况为:c(n,x)*9^(n-x) 8 还要减去首位为0的情况:c(n-1,x)*9^(n-1-x) 9 故为: c(n,x)*9^(n-x)- c(n-1,x)*9^(n-1-x) 10 calc[n][x]= c(n,x)*9^(n-x) 11 dp[n][

Codevs 3134 Circle

3134 Circle 题目描述 Description 在一个圆上,有2*K个不同的结点,我们以这些点为端点,连K条线段,使得每个结点都恰好用一次.在满足这些线段将圆分成最少部分的前提下,请计算有多少种连线的方法 输入描述 Input Description 仅一行,一个整数K(1<=K<=30) 输出描述 Output Description 两个用空格隔开的数,后者为最少将圆分成几块,前者为在此前提下连线的方案数 样例输入 Sample Input 2 样例输出 Sample Outpu

卡特兰数 codevs 1086 栈

1086 栈 2003年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表. 栈有两种最重要的操作,即pop(从栈顶弹出一个元素)和push(将一个元素进栈). 栈的重要性不言自明,任何一门数据结构的课程都会介绍栈.宁宁同学在复习栈的基本概念时,想到了一个书上没有讲过的问题,而他自己无法给出答案,所以需要你的帮

递推总结

这是摘选自网络的一段话,感觉不错,特此分享 首先,确认:是否能easy的得到简单情况的解? 然后,如果:规模为N-1的情况已经得到解决. 最后,重点分析:当规模扩大到N时,怎样枚举出全部的情况,而且要确保对于每一种子情况都能用已经得到的数据解决. 假设这样递推公式找不出来,能够尝试列出前几项,找规律. 注意: n1.编程中的空间换时间的思想.就是开个数组,把须要范围内的数都计算出来,存入数组,输出调用就可以.存储空间用的多点,但时间复杂度小了. n2.并不一定仅仅是从N-1到N的分析.可能跟前几

卡特兰数 3134 Circle

3134 Circle 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 在一个圆上,有2*K个不同的结点,我们以这些点为端点,连K条线段,使得每个结点都恰好用一次.在满足这些线段将圆分成最少部分的前提下,请计算有多少种连线的方法 输入描述 Input Description 仅一行,一个整数K(1<=K<=30) 输出描述 Output Description 两个用空格隔开的数,后者为最少将圆分成几块,前者为在此前提下连

uva 1478 - Delta Wave(递推+大数+卡特兰数+组合数学)

题目链接:uva 1478 - Delta Wave 题目大意:对于每个位置来说,可以向上,水平,向下,坐标不能位负,每次上下移动最多为1, 给定n问说有多少种不同的图.结果对10100取模. 解题思路:因为最后都要落回y=0的位置,所以上升的次数和下降的次数是相同的,并且上升下降的关系满足出栈入栈的关系.即卡特兰数. 所以每次枚举i,表示有i个上升,i个下降,用组合数学枚举出位置,然后累加求和. C(2?in)?f(i)=C(2?i?2n)?f(i?1)?(n?2?i+1)?(n?2?i+2)

hdu4165(简单递推,实则卡特兰数的应用)

这道题之前自己做的时候并没有反应过来是求卡特兰数,当时是按递推来想的.后来查了下HDU4165,结果一看大标题就说是卡特兰数,自己想了想,还真是那么回事.主要还是对于卡特兰数用的不多,也就当时没立马反应过来了.下面介绍这道题我的思路,然后对卡特兰数再做一些补充. 本题题意:罐子里有N片相同的药片,开始的时候药片都是完整的一整片.然后一个每天从中任意取一片,如果该药片是完整的一整片,那么他会吃点半片,然后将剩余半片扔回罐里,如果恰好是半片,那他直接吃掉拿出来的半片.显然2N天后,他吃完全部N片药片

Buy the Ticket(卡特兰数+递推高精度)

Buy the Ticket Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 1886 Accepted Submission(s): 832   Problem Description The \\\\\\\"Harry Potter and the Goblet of Fire\\\\\\\" will be on show i