博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU1294 Rooted Trees Problem(整数划分 组合数学 DP)
阅读量:6248 次
发布时间:2019-06-22

本文共 869 字,大约阅读时间需要 2 分钟。

讲解见, 4 可重组合

dfs枚举子树的节点个数,相乘再累加

 

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cstdlib>
 5 #include<algorithm>
 6 
using 
namespace std;
 7 typedef 
long 
long LL;
 8 
 9 LL f[
41];
10 LL cm(LL n, LL m){
11     m = min(n - m, m);
12     LL ans = 
1;
13     
for(LL i = 
1; i <= m; i++){
14         ans = ans * (n - m + i) / i;
15     }
16     
return ans;
17 }
18 
19 
20 
void dfs(
int n, 
int x, 
int r, LL mul){
21     
if(r == 
0){
22         f[n] += mul;
23 
24     }
else{
25         
for(
int i = x; i < n; i++){
26             
for(
int j = 
1; i * j <= r; j++){
27                 dfs(n, i + 
1 , r - i * j, mul * cm(f[i] + j - 
1,j ) );
28             }
29         }
30 
31     }
32 }
33 
int main(){
34     memset(f, 
0  , 
sizeof(f));
35     f[
1] = 
1;f[
2] = 
1;
36     
for(
int i = 
3; i <= 
40; i++){
37         dfs(i, 
1, i - 
1 ,
1);
38     }
39 
40     
int n;
41     
while(~scanf(
"
%d
", &n)){
42         printf(
"
%I64d\n
", f[n]);
43 
44     }
45     
return 
0;
46
 } 

 

 

 

转载于:https://www.cnblogs.com/IMGavin/p/5639733.html

你可能感兴趣的文章
iPhone和iPad开发图标基本知识
查看>>
2012年中国系统架构师大会 即将开幕
查看>>
区块链游戏导航,一个不错的生意!
查看>>
【iOS-cocos2d-X 游戏开发之十三】cocos2dx通过Jni调用Android的Java层代码(上)
查看>>
安装BOSH -在vSphere上通过BOSH工具大规模部署Cloud Foundry
查看>>
采用python的pyquery引擎做网页爬虫,进行数据分析
查看>>
阿里上市,他们如是说
查看>>
HTML将不再有版本号
查看>>
Eclipse代码中中文字显示很小的解决办法
查看>>
ArchLinux and LXDE and LXDM
查看>>
藏头诗琐谈
查看>>
Python分布式+云计算
查看>>
jconsole weblogic
查看>>
VIM快捷键:
查看>>
javascript Date format(js日期格式化)
查看>>
.net中获得Java中currentTimeMillis
查看>>
经典算法题每日演练——第一题 百钱买百鸡
查看>>
DomainUpDown与NumericUpDown
查看>>
POJ-1019 Number Sequence 二分查找
查看>>
ecshop模板<!-- TemplateBeginEditable name="左上角主区域" -->用法
查看>>