凸多边形分割

这道题拿道题没有一点思路。我一直在想如何把问题变小,然而一无所获(不是有漏项。就是有重复),最后不得不看了题解,发现这道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)
因为i边形拥有点集{2--i-1}

那么对于每一个点都有一种方案分割情况

所以状态转移方程就出来了dp(i)=∑dp(j)*dp(i-j+1)(1<=j<=i-1)(很神奇对不对)

后来才知道,这就是Catalan数,高兴,终于推出来了

下面附上代码

#include<cstdio>
#define N 200+10
long long f[N], n;
using namespace std;
long long dp(int i)
{if(i==2 or i==3 )return f[i]=1;if(f[i])return f[i];long long t=0;for(int j=2;j<=i-1;j++){
////        printf("1\n");t=(t+dp(j)*dp(i-j+1))%1234567;}return f[i]=t;
}
int main()
{scanf("%lld",&n);printf("%lld",dp(n));return 0;
}

Catalan数应用很多,作为一个oier,应该好好掌握

附上一个讲解Catalan数的blog  http://www.cnblogs.com/yaozhongxiao/archive/2009/11/10/1600516.html

转载于:https://www.cnblogs.com/star-eternal/p/7580091.html

诡异的dp(凸多边形分割):catalan数相关推荐

  1. 面试收集--卡特兰数(Catalan数)应用

    引言:有高矮不同的12个人,现在要他们对应排成两列,保证两列分别有序,且对应位置总是第一列比第二列矮,请问有多少种排列方式? 这是蘑菇街笔试的时候一个题目,当时陷入了枚举分类的死循环中,殊不知如果知道 ...

  2. Catalan数——卡特兰数

    今天阿里淘宝笔试中碰到两道组合数学题,感觉非常亲切,但是笔试中失踪推导不出来 后来查了下,原来是Catalan数.悲剧啊,现在整理一下 Catalan数--卡特兰数] 一.Catalan数的定义令h( ...

  3. Catalan数推导及应用

    Catalan数的定义: 设表示用下面的方法把凸多边形区域分成三角形区域的方法数:在有n+1条边的凸多边形区域内通过插入在其中不相交的对角线而把它分成三角形区域.定义.则满足递推关系     这个递推 ...

  4. Catalan数总结

    参考维基百科 Catalan数详解 这里只是把常见的公式搬过来 设Catalan数的第n项为 hnhn,定义 h0=h1=1h0=h1=1 则有如下两个常用递推式 hn=h0hn−1+h1hn−2+. ...

  5. Catalan数(卡特兰数)系列问题及代码

    目录 Catalan数(卡特兰数) 姐妹洗碗问题 n个不同元素进栈,求出栈元素不同排列的个数? 找零问题 一般化 c++代码实现 Catalan数(卡特兰数) 姐妹洗碗问题 n个不同元素进栈,求出栈元 ...

  6. Catalan数的分析和应用

    [Catalan数--卡特兰数] 一.Catalan数的定义令h(1)=1,Catalan数满足递归式:h(n) = h(1)*h(n-1) + h(2)*h(n-2) + ... + h(n-1)h ...

  7. Catalan 数的应用

    Wikipedia上的Catalan numbers: In combinatorial mathematics, the Catalan numbers form a sequence of nat ...

  8. catalan 数。。

    性质 令h(0)=1,h(1)=1,catalan数满足递归式: h(n)= h(0)*h(n-1) + h(1)*h(n-2) + ... + h(n-1)h(0) (其中n>=2),这是n阶 ...

  9. 卡特兰数 Catalan数

    From: http://www.cppblog.com/MiYu/archive/2010/08/07/122573.html 维基百科资料: 卡塔兰数 卡塔兰数是组合数学中一个常出现在各种计数问题 ...

  10. 卡特兰数 java,Catalan数(卡特兰数)

    由于Catalan数经常会在算法题或面试题中出现,在这里做一下小小的总结. 介绍 Catalan数是组合数学中一个常在各种计数问题中出现的数列.一般项公式为 Cn的另一个表达形式为 一般来讲,我们编程 ...

最新文章

  1. 2022-2028年中国服务器行业投资分析及前景预测报告
  2. 转载CSDN - 从程序员到HR——面试经验分享
  3. BZOJ2821: 作诗(Poetize)
  4. C语言linux getopt_long()函数(命令行解析)(getopt、getopt_long_only)(短选项 -,长选项 --)(option结构体)(optind、optarg变量)
  5. 最短路之 SPFA(判环+负权)
  6. CentOS中输入yum报错:sudo: unable to execute /bin/yum: No such file or directory
  7. python写网络调试助手_Qt开源作品4-网络调试助手
  8. 集算器并行处理大文本文件的示例
  9. Java Map用法
  10. 程序员curd编程是什么_为什么许多程序员讨厌结对编程?
  11. python程序实现excel排序_python初学—-实现excel里面读数据进行排序(改进算法)
  12. Docker 容器使用教程
  13. java ssh 框架下 利用junit4 spring-test进行单元测试
  14. java上路系列之一
  15. 《AutoCAD 2016中文版从入门到精通》——- 导读
  16. 计算机组装流程是什么,组装电脑的步骤
  17. MYSQL设置初始密码
  18. “舒淇半停工原因”上热搜:人生下半场,拼的是健康
  19. 2020线上夏令营感受
  20. 宝塔面板搭建WordPress网站完整教程

热门文章

  1. python 闭包,装饰器,random,os,sys,shutil,shelve,ConfigParser,hashlib模块
  2. Vue-Router路由Vue-CLI脚手架和模块化开发 之 使用props替代路由对象的方式获取参数...
  3. 宿舍小助手之个人分析NABCD
  4. 块状元素(div)与内联元素(span)
  5. highcharts 使用实例
  6. Ajax实现前台传值到后台
  7. ‘numeric_limits’ is not a member of ‘std‘解决方法
  8. dijit.layout.ContentPane--dojo学习
  9. 初探Nacos(四)-- SpringBoot下使用Nacos作为配置中心
  10. 破译密码、设计飞机和建设团队:Randy Shoup谈高绩效团队