dp + 组合数 Codeforces Beta Round #9 (Div. 2 Only) D
http://codeforces.com/problemset/problem/9/D
题目大意:给你一个二叉树和n个数字,满足左小右大,能形成多少种不同的二叉树
思路:定义dp[i][j]表示目前有i个节点,根节点为i,深度为j。
然后我们就暴力枚举顶点i,然后以他为树根,再暴力一下左右两个子树就好了。
//看看会不会爆int!数组会不会少了一维!
//取物问题一定要小心先手胜利的条件
#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define ALL(a) a.begin(), a.end()
#define pb push_back
#define mk make_pair
#define fi first
#define se second
#define haha printf("haha\n")
const int maxn = + ;
int n, H;
LL dp[maxn][maxn];
/*
定义dp[i][j]表示目前结点,深度为j
dp[i][j] = sigma(dp[i - k - 1][j - z - 1] * dp[k][z]);
*/ int main(){
cin >> n >> H;
for (int i = ; i <= n; i++) dp[][i] = ;
for (int i = ; i <= n; i++){
for (int h = ; h <= i; h++){///目前i个组成的最大层数
for (int j = ; j < i; j++){///left的个数
for (int l = ; l <= j; l++){///left的最大层数
for (int r = ; r <= i - j - ; r++){///右边的最大层数
if ( + max(l, r) == h){
dp[i][h] += dp[j][l] * dp[i - j - ][r];
}
}
}
}
}
}
LL ans = ;
for (int i = H; i <= n; i++)
ans += dp[n][i];
printf("%lld\n", ans);
return ;
}
不过我貌似看到了卿学姐写的更加简单,定义的也更加简单
http://www.cnblogs.com/qscqesze/p/5414271.html
定义dp[i][j]表示目前深度小于等于i,有j个节点的所有二叉树的种类数,然后容斥一下就好了
//看看会不会爆int!数组会不会少了一维!
//取物问题一定要小心先手胜利的条件
#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define ALL(a) a.begin(), a.end()
#define pb push_back
#define mk make_pair
#define fi first
#define se second
#define haha printf("haha\n")
const int maxn = + ;
int n, H;
LL dp[maxn][maxn];
/*
定义dp[i][j]表示目前深度小于等于i,有j个节点的所有二叉树的种类数
dp[i][j] = sigma(dp[i - 1][j - k - 1] * dp[i - 1][j - k]);
*/ int main(){
cin >> n >> H;
for (int i = ; i <= n; i++) {///目前深度为i
dp[i][] = ;
for (int j = ; j <= n; j++){///总节点数
for (int k = ; k < j; k++){///左边节点的个数
dp[i][j] += dp[i - ][k] * dp[i - ][j - k - ];
}
}
}
printf("%lld\n", dp[n][n] - dp[H - ][n]);
return ;
}
dp + 组合数 Codeforces Beta Round #9 (Div. 2 Only) D的更多相关文章
- 暴力/DP Codeforces Beta Round #22 (Div. 2 Only) B. Bargaining Table
题目传送门 /* 题意:求最大矩形(全0)的面积 暴力/dp:每对一个0查看它左下的最大矩形面积,更新ans 注意:是字符串,没用空格,好事多磨,WA了多少次才发现:( 详细解释:http://www ...
- Codeforces Beta Round #83 (Div. 1 Only)题解【ABCD】
Codeforces Beta Round #83 (Div. 1 Only) A. Dorm Water Supply 题意 给你一个n点m边的图,保证每个点的入度和出度最多为1 如果这个点入度为0 ...
- Codeforces Beta Round #77 (Div. 2 Only)
Codeforces Beta Round #77 (Div. 2 Only) http://codeforces.com/contest/96 A #include<bits/stdc++.h ...
- Codeforces Beta Round #67 (Div. 2)
Codeforces Beta Round #67 (Div. 2) http://codeforces.com/contest/75 A #include<bits/stdc++.h> ...
- Codeforces Beta Round #59 (Div. 2)
Codeforces Beta Round #59 (Div. 2) http://codeforces.com/contest/63 A #include<bits/stdc++.h> ...
- Codeforces Beta Round #52 (Div. 2)
Codeforces Beta Round #52 (Div. 2) http://codeforces.com/contest/56 A #include<bits/stdc++.h> ...
- Codeforces Beta Round #49 (Div. 2)
Codeforces Beta Round #49 (Div. 2) http://codeforces.com/contest/53 A #include<bits/stdc++.h> ...
- Codeforces Beta Round #46 (Div. 2)
Codeforces Beta Round #46 (Div. 2) http://codeforces.com/contest/49 A #include<bits/stdc++.h> ...
- Codeforces Beta Round #40 (Div. 2)
Codeforces Beta Round #40 (Div. 2) http://codeforces.com/contest/41 A #include<bits/stdc++.h> ...
随机推荐
- android项目实战 --ListView 头部ViewPager广告轮询图效果
看开源框架:https://github.com/tianshaojie/AndroidFine,里面有如下效果,特记录学习下,以后项目中用也好能够立刻想起来. 如上面所示,是常见项目中的图片轮训 ...
- MySQL的保留字查询
ADD ALL ALTER ANALYZE AND AS ASC AUTO_INCREMENT BDB BEFORE BERKELEYDB BETWEEN BIGINT BINARY BLOB BOT ...
- 【转】cookie和session的区别
原作者:施杨(施杨's Think out)出处:http://shiyangxt.cnblogs.com ************** 本文版权归原作者和博客园共有,欢迎转载,转载请保留该申明 ** ...
- 第八十四节,css布局小技巧及font-awesome图标使用
css布局小技巧及font-awesome图标使用 图片鼠标放上去遮罩效果,显示文字 当鼠标放上去时 /*最外层div*/ .a{ width: 384px; height: 240px; backg ...
- 《JS权威指南学习总结--第8章 函数知识》
内容要点: 1.函数表达式定义后立即调用: var tensquared = ( function(x){ return x*x ;}(10) ); 2.嵌套函数: 在JS里,函数可以嵌套 ...
- IE6/IE7浏览器中"float: right"自动换行的解决方法
在项目中,调试IE6/IE7,发现一个bug,那就是:在同一个div包裹着,几个块级元素并列为一行的情况下,设置了float:right的块级元素会自动换行: 代码如下: <p> < ...
- 向网页中写入js和css
向网页中写入js和css 本函数由前辈所写 loadFile: function (url, ftype) { var fileref; if (ftype == "js") { ...
- .Net使用JsonSchema验证Json
最近项目中遇到了这样的需求,需要对上传的Json进行验证,以确保Json数据的准确性.前后使用了两种方式来验证: (1)第一种方式的实现思想:根据Json数据的格式,严格定义相应的类结构,并在Syst ...
- ActiveMQ in Action(3) - Persistence
关键字: activemq 2.3 Persistence2.3.1 AMQ Message Store AMQ Message Store是ActiveMQ5.0缺省的持久化存储.Messag ...
- Chrome 自动填充的表单是淡黄色的背景怎么办!
chrome浏览器自动填充表单的黄色背景高亮(#FAFFBD)一直困扰着我,我之前没想着理它,可是最近一个登陆框,需要用到图标,于是我草率的直接设置在input元素里面,结果问题就来了,很难看很难看, ...