博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【BZOJ3769】BST again [DP]
阅读量:6599 次
发布时间:2019-06-24

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

BST again

Time Limit: 10 Sec  Memory Limit: 256 MB
[][][]

Description

  求有多少棵大小为n的深度为h的二叉树。(树根深度为0;左右子树有别;答案对1000000007取模)

Input

  第一行一个整数T,表示数据组数。
  以下T行,每行2个整数n和h。

Output

  共T行,每行一个整数表示答案(对1000000007取模)

Sample Input

  2
  2 1
  3 2

Sample Output

  2
  4

HINT

  1<=n<=600,0<=h<=600,1<=T<=10

Solution

  我们运用DP来求解。

  记f[i][j]表示点数为i,深度==j的方案数;

  记g[i][j]表示点数为i,深度<=j的方案数。

  转移的时候所以枚举一个点k作为根,那么左边显然就有k-1个点右边有i-k个点

  此时深度恰好为j-1的方案数为:

  g[k-1][j-1] * g[i-k][j-1] - g[k-1][j-2] * g[i-k][j-2]

  所以我们就可以得到答案了。

Code

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 using namespace std; 9 typedef long long s64;10 11 const int ONE = 1005;12 const int MOD = 1e9 + 7;13 14 int T;15 int n, h;16 int x, y;17 int f[ONE][ONE], g[ONE][ONE];18 19 struct pwoer20 {21 int x, y;22 }a[ONE];23 24 int get()25 {26 int res=1,Q=1; char c;27 while( (c=getchar())<48 || c>57)28 if(c=='-')Q=-1;29 if(Q) res=c-48; 30 while((c=getchar())>=48 && c<=57) 31 res=res*10+c-48;32 return res*Q; 33 }34 35 void Modit(int &a)36 {37 if(a < 0) a += MOD;38 if(a >= MOD) a -= MOD;39 }40 41 int main()42 {43 T = get();44 for(int i = 1; i <= T; i++)45 a[i].x = get(), a[i].y = get() + 1,46 n = max(n, a[i].x), h = max(h, a[i].y);47 48 f[0][0] = 1; for(int i = 0; i <= h; i++) g[0][i] = 1;49 f[1][1] = 1; for(int i = 1; i <= h; i++) g[1][i] = 1;50 for(int i = 2; i <= n; i++)51 {52 for(int j = 2; j <= i; j++)53 for(int k = 1; k <= i; k++)54 Modit(f[i][j] += (s64)g[k - 1][j - 1] * g[i - k][j - 1] % MOD - (s64)g[k - 1][j - 2] * g[i - k][j - 2] % MOD);55 56 g[i][0] = f[i][0];57 for(int j = 1; j <= h; j++)58 Modit(g[i][j] = g[i][j - 1] + f[i][j]);59 } m60 61 for(int i = 1; i <= T; i++)62 printf("%d\n", f[a[i].x][a[i].y]);63 64 }
View Code

 

转载于:https://www.cnblogs.com/BearChild/p/7731705.html

你可能感兴趣的文章
从0开始写小程序(三)前台循环数据绑定
查看>>
RecyclerView侧滑删除功能
查看>>
记一个hystrix异常
查看>>
9.02-Spring IOC 容器中Bean的生命周期
查看>>
6.6 tar打包
查看>>
yum更换国内源,yum下载rpm包,源码包安装
查看>>
BigDecimal去除小数点后多余的0
查看>>
Ajax中的async:false作用
查看>>
微信自动抢红包的实现(Demo已增加查看TopActivity功能)
查看>>
Spring MVC核心技术
查看>>
每一天都是挑战-第二天
查看>>
Linux监控平台搭建(三)--自定义监控项目、问题告警及处理
查看>>
合拍在线:安全永远是互金行业发展的生命线
查看>>
TCP协议如何保证传输的可靠性
查看>>
Spring Cloud + Spring Boot + Mybatis + shiro + RestFul + 微服务
查看>>
Spring Cloud云架构 - SSO单点登录之OAuth2.0 登出流程(3)
查看>>
建站心得之discuz门户程序相比ZBLOG具有哪些优势[图]
查看>>
迭代设计模式
查看>>
编程之美 测试赛 石头剪刀布
查看>>
签名问题
查看>>