题意:给你n个点,将这些点放在一个环上,问你不相交的连k条线的方案数。(没有重点)

题解:dp[i][j]表示i个点连j条线的方案数,那么新加一个点i,

情况1,i没有和之前的点相连,方案数为dp[i-1][j];

情况2,i和p号点相连(0<p<j),那么就划分成了两个环,然后枚举一些子问题的连边数,方案数为sum( dp[p-1][q]*dp[i-1-p][j-1-q] ) (0<=q<j)

时间复杂度为O(n^4),也许可以和号优化

#include<cstdio>
#include<cmath>
#include<vector>
#include<map>
#include<set>
#include<algorithm> using namespace std;
typedef long long ll; //#define local
const int maxn = ; ll dp[maxn][maxn]; int main()
{
#ifdef local
freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
#endif // local
int n,k;
scanf("%d%d",&n,&k);
for(int i = ; i <= n; i++) dp[i][] = ;
for(int i = ; i <= n; i++ ){
for(int j = ; j <=k; j++){
dp[i][j] = dp[i-][j];
for(int p = ; p < i; p++){ //枚举连到哪一个点
for(int q = ; q < j; q++ ){ //枚举子问题的边数
dp[i][j] += dp[p-][q]*dp[i-p-][j--q];
}
}
}
}
printf("%I64d",dp[n][k]);
return ;
}

最新文章

  1. Android初级教程_获取Android控件的宽和高
  2. 策略模式(Strategy Pattern)
  3. X.509证书_生成X.509协议的证书
  4. IOS本地通知:UILocalNotification使用记录
  5. 《高质量C++/C编程指南》陷阱 【转】
  6. nodejs npm install全局安装和本地安装的区别
  7. Drawable、Bitmap、byte[]之间的转换
  8. (转载)php 合并数组中的数据,如果键值相等其值相加
  9. java设计模式--行为型模式--状态模式
  10. myeclipse 保存时自动格式化代码
  11. 初学ant
  12. Itunes制作手机铃声,图文版
  13. AD7928
  14. HBase源代码分析之HRegion上MemStore的flsuh流程(一)
  15. Scrum已经俘获中国开发者的心? ——从《2017年开发者调查报告》看真相!
  16. springmvc图片上传(兼容ie8以上,实时预览)
  17. String放入运行时常量池的时机与String.intern()方法解惑
  18. java中List&lt;Map&lt;String, Object&gt;&gt;关于null的判断
  19. 如何从日期对象python获取以毫秒(秒后3位小数)为单位的时间值?
  20. codeforces 578a//A Problem about Polyline// Codeforces Round #320 (Div. 1)

热门文章

  1. sqlserver2012——逻辑运算符
  2. 实现简易版shell
  3. GO:字符串Slice后乱码问题
  4. [Xcode 实际操作]七、文件与数据-(13)数据持久化存储框架CoreData的使用:编辑CoreData中的数据
  5. appium自动化测试框架——自动化启动多台设备思路梳理
  6. JAVA之动态编译
  7. 洛谷P4568 飞行路线
  8. HDU-1556-Color the ball (线段树和差分数组两种解法)
  9. python之is 和 == 的区别//编码和解码
  10. Mybatis 查询一个对象包含多个子对象 (List 包含 List)