Codeforces 830D Singer House 动态规划
原文链接https://www.cnblogs.com/zhouzhendong/p/CF830D.html
题解
考虑用 $dp[i][j]$ 表示深度为 $i$ 的树里,有 $j$ 条路径的方案数。分四种情况转移即可:
枚举 $j,k$ ,我们来算一下 $dp[i-1][j]$ 和 $dp[i-1][k]$ 对 $dp[i]$ 的贡献。
设 $tmp = dp[i-1][j] \times dp[i-1][k]$ ,
1. 不合并任何路径。$dp[i][j+k] += tmp$
2. 不合并,并加入当前根节点单独组成路径。$dp[i][j+k+1] += tmp$
3. 合并根和任意一条路径。$dp[i][j+k] += tmp \times 2(j+k)$
4. 合并根和任意两条路径。$dp[i][j+k-1]+= tmp \times 2\binom{j+k}{2}$
由于当 $j>n$ 的时候,$dp[i][j]$ 对于最终答案一定没有贡献(这么多路径不可能合并成一条),所以 dp 状态第二维的上界是 $n$ 。
代码
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
LL read(){
LL x=0,f=1;
char ch=getchar();
while (!isdigit(ch)&&ch!='-')
ch=getchar();
if (ch=='-')
f=0,ch=getchar();
while (isdigit(ch))
x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
return f?x:-x;
}
const int N=405,mod=1e9+7;
int n;
int Inv[N],Fac[N];
int Pow(int x,int y){
int ans=1;
for (;y;y>>=1,x=1LL*x*x%mod)
if (y&1)
ans=1LL*ans*x%mod;
return ans;
}
int C(int x,int y){
if (y<0||y>x)
return 0;
return 1LL*Fac[x]*Inv[y]%mod*Inv[x-y]%mod;
}
int dp[N][N];
int main(){
n=read();
for (int i=Fac[0]=1;i<=n;i++)
Fac[i]=1LL*Fac[i-1]*i%mod;
Inv[n]=Pow(Fac[n],mod-2);
for (int i=n;i>=1;i--)
Inv[i-1]=1LL*Inv[i]*i%mod;
memset(dp,0,sizeof dp);
dp[1][1]=dp[1][0]=1;
for (int i=2;i<=n;i++)
for (int j=0;j<=n;j++)
for (int k=0;j+k<=n;k++){
int tmp=1LL*dp[i-1][j]*dp[i-1][k]%mod;
dp[i][j+k]=(tmp+dp[i][j+k])%mod;
dp[i][j+k]=(2LL*tmp*(j+k)+dp[i][j+k])%mod;
dp[i][j+k+1]=(tmp+dp[i][j+k+1])%mod;
dp[i][j+k-1]=(2LL*tmp*C(j+k,2)+dp[i][j+k-1])%mod;
}
cout << dp[n][1];
return 0;
}
Codeforces 830D Singer House 动态规划的更多相关文章
- Singer House CodeForces - 830D (组合计数,dp)
大意: 一个$k$层完全二叉树, 每个节点向它祖先连边, 就得到一个$k$房子, 求$k$房子的所有简单路径数. $DP$好题. 首先设$dp_{i,j}$表示$i$房子, 分出$j$条简单路径的方案 ...
- Codeforces 839C Journey - 树形动态规划 - 数学期望
There are n cities and n - 1 roads in the Seven Kingdoms, each road connects two cities and we can r ...
- Codeforces 834D The Bakery - 动态规划 - 线段树
Some time ago Slastyona the Sweetmaid decided to open her own bakery! She bought required ingredient ...
- Codeforces 837D Round Subset - 动态规划 - 数论
Let's call the roundness of the number the number of zeros to which it ends. You have an array of n ...
- CodeForces 623E Transforming Sequence 动态规划 倍增 多项式 FFT 组合数学
原文链接http://www.cnblogs.com/zhouzhendong/p/8848990.html 题目传送门 - CodeForces 623E 题意 给定$n,k$. 让你构造序列$a( ...
- Codeforces 101623E English Restaurant - 动态规划
题目传送门 传送门 题目大意 餐厅有$n$张桌子,第$i$张桌子可以容纳$c_i$个人,有$t$组客人,每组客人的人数等概率是$[1, g]$中的整数. 每来一组人数为$x$客人,餐厅如果能找到最小的 ...
- Codeforces 264C Choosing Balls 动态规划
原文链接https://www.cnblogs.com/zhouzhendong/p/CF264C.html 题目传送门 - CF264C 题意 给定一个有 $n$ 个元素的序列,序列的每一个元素是个 ...
- Codeforces 1000G Two-Paths 树形动态规划 LCA
原文链接https://www.cnblogs.com/zhouzhendong/p/9246484.html 题目传送门 - Codeforces 1000G Two-Paths 题意 给定一棵有 ...
- codeforces 17C Balance(动态规划)
codeforces 17C Balance 题意 给定一个串,字符集{'a', 'b', 'c'},操作是:选定相邻的两个字符,把其中一个变成另一个.可以做0次或者多次,问最后可以生成多少种,使得任 ...
随机推荐
- T-SQL DISTINCT子句 去重复
语法 以下是DISTINCT关键字的基本语法,用于删除重复记录. SELECT DISTINCT column1, column2,.....columnN FROM table_name WHERE ...
- 8-Images
HTML Image Tags Tag Description <img> Defines an image <map> Defines an image-map <ar ...
- var_export 掉咋天
var_export 文件缓存经常使用 输出或返回一个变量的字符串表示 /** * 写入缓存 * * @param string $id * @param mixed $data * @ ...
- python-包及日志模块使用
一.包 1.包就是一个保护有__init__.py文件的文件夹,包的本质就是一种模块,即包是用来导入使用的,包内部包含的文件也都是用来被导入使用的.包是为了更好组织好模块,就是一个文件夹. 注:在py ...
- GDOI2018 滑稽子图 [斯特林数,树形DP]
传送门并没有 思路 见到那么小的\(k\)次方,又一次想到斯特林数. \[ ans=\sum_{T} f(T)^k = \sum_{i=0}^k i!S(k,i)\sum_{T} {f(T)\choo ...
- LuoGu P2002 消息扩散
题目传送门 这个题其实就是tarjan缩点的板子题对吧....至少我是这么想的 首先这是个有向图,对于一个有向图,我们肯定要考虑环的存在与否,恰好这个题又是让我们找出最少的点,使得这几个点能够走遍全图 ...
- HTML之Position用法
在此,先做声明,本篇仅是摘录自互联网,个人认为这篇文章讲的很不错,附于此地与大家共同欣赏. position的四个属性值: 1.relative2.absolute3.fixed4.static下面分 ...
- 【MySql】like用法
LIKE用法 SELECT * FROM TABLE WHERE col Like '%a';//检索以a结尾的内容 SELECT * FROM TABLE WHERE col Like '%a%'; ...
- python 知识梳理
1.数据类型:字符串,列表,元组,字典,集合.处理每种数据类型的函数 2.判断与循环部分 3.高级函数:lambda,map,reduce,filter 4.自定义模块以及第三方模块 5.函数式编程 ...
- Confluence 6 使用 Apache 和 mod_proxy 的基本配置
在这些示例中,我们使用下面的信息: http://www.example.com/confluence - 你计划使用的 URL http://example:8090/ - Confluence 当 ...