长沙理工大学第十二届ACM大赛-重现赛 大家一起来数二叉树吧 (组合计数)

大意: 求n结点m叶子二叉树个数.

直接暴力, $dp[i][j][k][l]$表示第$i$层共$j$节点, 共$k$叶子, 第$i$层有$l$个叶子的方案数, 然后暴力枚举第$i$层出度为1和出度为2的个数来转移.

复杂度虽然看上去是$O(n^6)$, 但实际上去掉多余状态后只有1178917, 可以通过.

#include <iostream>
#include <cstdio>
#define REP(i,a,n) for(int i=a;i<=n;++i)
using namespace std;
typedef long long ll;
const int P = 1e9+7, P2 = 998244353, INF = 0x3f3f3f3f;
const int N = 55;
int n, m;
int dp[N][N][N][N];
int f[N][N];
int fac[N], ifac[N], pow2[N];
ll inv(ll x){return x<=1?1:inv(P%x)*(P-P/x)%P;}

int main() {
	fac[0]=ifac[0]=pow2[0]=1;
	REP(i,1,50) fac[i]=(ll)fac[i-1]*i%P,ifac[i]=inv(fac[i]),pow2[i]=pow2[i-1]*2%P;
	dp[1][1][1][1] = 1;
	REP(i,1,50) REP(j,i,50) REP(k,1,j) REP(l,1,k) if (dp[i][j][k][l]) {
		REP(ii,0,l) {
			int t = min({l-ii,(50-ii-j)/2,50-k});
			REP(jj,0,t) {
				int c = (ll)dp[i][j][k][l]*fac[l]%P*ifac[ii]%P*ifac[jj]%P*ifac[l-ii-jj]%P*pow2[ii]%P;
				(dp[i+1][j+ii+2*jj][k+jj][ii+2*jj]+=c)%=P;
			}
		}
		(f[j][k] += dp[i][j][k][l]) %= P;
	}
	for (int n,m; ~scanf("%d%d", &n, &m); ) printf("%d\n", f[n][m]);
}

看了其他人题解后发现可以直接$O(n^4)$的$dp$.

记$dp[i][j]$为$i$节点, $j$叶子的方案数, 枚举根节点左右子树的叶子数$x,y$, 就有

$dp[i][j]=\sum dp[x][y]dp[i-1-x][y]$

原文地址:https://www.cnblogs.com/uid001/p/10925416.html

时间: 2024-08-05 16:08:51

长沙理工大学第十二届ACM大赛-重现赛 大家一起来数二叉树吧 (组合计数)的相关文章

长沙理工大学第十二届ACM大赛-重现赛

年轮广场 时间限制:1秒 空间限制:131072K 题目描述 在云塘校区,有一个很适合晒太阳的地方----年轮广场 年轮广场可以看成n个位置顺时针围成一个环. 这天,天气非常好,Mathon带着他的小伙伴们出来晒太阳.他们分别坐在A[i]位置上,每个位置上保证最多只有1个小伙伴.现在Mathon想让大家集合玩狼人杀,所以想选择一个位置集合,之后所有的人顺时针或逆时针移动到那里去,每移动两个相邻的位置需要1个单位时间,小伙伴们都很有素质所以不会插近路踩草坪,只会沿着位置走. Mathon想越快集合

长沙理工大学第十二届ACM大赛

A 时间限制:1秒 空间限制:131072K 题目描述 在云塘校区,有一个很适合晒太阳的地方----年轮广场 年轮广场可以看成n个位置顺时针围成一个环. 这天,天气非常好,Mathon带着他的小伙伴们出来晒太阳.他们分别坐在A[i]位置上,每个位置上保证最多只有1个小伙伴.现在Mathon想让大家集合玩狼人杀,所以想选择一个位置集合,之后所有的人顺时针或逆时针移动到那里去,每移动两个相邻的位置需要1个单位时间,小伙伴们都很有素质所以不会插近路踩草坪,只会沿着位置走. Mathon想越快集合越好,

18年第十二届东北四省赛

18年第十二届东北四省赛 5.19晚上的东北四省赛的热身赛老师说不用参加,当时白天打了一场之后,也确实脑壳疼QAQ: 5.20很吉利的日期啊,9.30-2.30,还是一样的分工读题,外加看榜,然后很幸运,两道水题,一道A,一道K,队友直接听我们的上去敲,然后交的时候比较谨慎,0罚时,连A两题,然后挂机4小时40分钟?!然后我们讨论了B,然后就一直B....当时觉得B转换为二进制没问题,后来WA,发现有个地方爆Long long,然后又发现有个地方爆Long long,然后把乘法改成除法感觉不会爆

“第二十二届斯克利亚宾国际钢琴大赛”落幕, 长江钢琴陪伴国际选手再攀艺术高峰!

插入视频:https://v.qq.com/x/page/g3054br91st.html “斯克利亚宾国际钢琴大赛”精彩集锦 2020年1月19日18:00, “第二十二届斯克利亚宾国际钢琴大赛”颁奖仪式在厦门鼓浪屿音乐厅盛大举行.李博文.俞易辰.郝一雷三位中国选手分别排定本届大赛前三甲席位,俄罗斯选手Alexey Trushechkin荣获“特别奖”.颁奖典礼上,本届大赛组委会特向鼓浪屿管委会颁发证书,以感谢鼓浪屿管委会对本届大赛的指导和支持. 在各界的瞩目中,这场汇集世界权威钢琴大师和顶级

长春理工大学第十四届程序设计竞赛(重现赛)M.Orx Zone

链接:https://ac.nowcoder.com/acm/contest/912/M 题意: Daenerys Stormborn, 风暴中出生的丹尼莉丝,the Unburnt, 烧不死的,Queen of Meereen, 弥林女王,Queen of the Andals and the Rhoynar and the First Men, 安达尔人,罗伊那人,和先民的女王,Lord of the Seven Kingdoms, 七国之主,Protector of the Realm,

2016年湖南省第十二届大学生计算机程序设计竞赛---Parenthesis(线段树求区间最值)

原题链接 http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1809 Description Bobo has a balanced parenthesis sequence P=p1 p2…pn of length n and q questions. The i-th question is whether P remains balanced after pai and pbi  swapped. Note that questions ar

政协十二届五xq

●赠送园区专属活动展位两个: [改变贫困地区面貌是我们的历史责任] 十二届全国人大常委会第二十六次会议分组审议全国人大常委会工作报告稿 从2016年10月开始,永兴县认真开展"三资"清查,规范村级财务,组织4个调研督查组,对各乡镇清理情况进行专项督查:查纠各村居(社区)在执行党的路线方针政策.六大纪律.遵守法律法规等方面存在的问题,特别是针对一些城郊村和富裕村.贫困村,以及群众反映强烈.矛盾集中突出的村居(社区),深入细致地来一次"大体检",认真排查问题线索.截至目

2019第二十二届科博会-北京人工智能大会

2019第二十二届北京科博会-国际人工智能大会由×××科学技术部.×××知识产权局.北京市人民政府.中国贸易促进委员会主办,第二十二届北京科博会-国际人工智能大会开幕式在北京国际展览中心举行,一场AI盛宴正式隆重拉开帷幕. 此次展览会以"智慧科技·能创未来"为主题,展出面积超过10000㎡,三百余家AI企业参与,其中不乏AI行业极具盛名的企业,携其产品和技术莅临现场,全面展示了人工智能技术落地的新成果,详解人工智能在各领域应用落地的实施路径,共同诠释了一个核心-人工智能如何更好地服务于

第十二届全国人民代表大会《政府工作报告》全文

第十二届全国人民代表大会<政府工作报告>全文 第十二届全国人民代表大会<政府工作报告>全文 温jia宝 2013年3月5日 温jia宝: 现在,我代表国务院,向大会报告过去五年的政府工作,并对今年工作提出建议,请各位代表审议,并请全国政协委员提出意见.[09:05] 过去五年工作回顾[09:06] 第十一届全国人民代表大会第一次会议以来的五年,是我国发展进程中极不平凡的五年.我们有效应对国际金融危机的严重冲击,保持经济平稳较快发展,国内生产总值从26.6万亿元增加到51.9万亿元,