Description

Link.

给定三个数 \(n,d,mod\),求有多少种 \(n\) 个点的不同构的树满足:除了度数为 \(1\) 的结点外,其余结点的度数均为 \(d\)。答案对质数 \(mod\) 取模。

Solution

感觉这个题好神啊,看 Editorial 看了半天。

先考虑 rooted 情况。设 \(f(i,j,k)\) 为有 \(i\) 个结点,当前根有 \(j\) 棵 subtree,最大的子树大小不超过 \(k\) 的答案,字数内的结点的度数皆为 given \(d\)(除了当前根本身)。

转移即:

\[f(i,j,k)=f(i,j,k-1)+\left(\sum_{l=1}^{l\le d,k\times l<i}f(i-k\times l,j-l,k-1)\times\binom{f(k,d-1,k-1)+l-1}{l}\right)
\]

意义我就直接 copy CSDN@forever_shi 了:

 解释一下这个式子,就是你子树大小不超过 \(k\) 的可以从都不超过 \(k−1\) 的转移过来,然后我们可以之前子树都是不超过 \(k−1\),现在开始是不超过 \(k\) 的了,也就是在当前选了若干个大小是 \(k\) 的子树,而这几个是一个可重组合,于是乘那个组合数。

#include<bits/stdc++.h>
typedef long long LL;
int n,d,MOD,far[1010],exfar[1010],f[1010][20][1010];
void exGCD(int one,int ano,int &x,int &y)
{
if(ano==0)
{
x=1;
y=0;
}
else
{
exGCD(ano,one%ano,y,x);
y-=(one/ano)*x;
}
}
int inv(int val)
{
int res,w;
exGCD(val,MOD,res,w);
return (res%MOD+MOD)%MOD;
}
int C(int n,int k)
{
if(n<k) return 0;
else
{
int res=1;
for(int i=1;i<=k;++i) res=LL(res)*(n-i+1)%MOD;
return LL(res)*exfar[k]%MOD;
}
}
int main()
{
scanf("%d %d %d",&n,&d,&MOD);
if(n<=2)
{
printf("1\n");
return 0;
}
far[0]=exfar[0]=1;
for(int i=1;i<=d;++i) far[i]=LL(far[i-1])*i%MOD;
for(int i=1;i<=d;++i) exfar[i]=inv(far[i]);
for(int i=0;i<=n;++i) f[1][0][i]=1;
for(int i=2;i<=n;++i)
{
for(int j=1;j<i && j<=d;++j)
{
for(int k=1;k<=n;++k)
{
f[i][j][k]=f[i][j][k-1];
for(int l=1;l*k<i && l<=j;++l)
{
if(k>1) f[i][j][k]=(f[i][j][k]+LL(f[i-k*l][j-l][k-1])*C(f[k][d-1][k-1]+l-1,l)%MOD)%MOD;
else f[i][j][k]=(f[i][j][k]+LL(f[i-k*l][j-l][k-1])*C(f[k][0][k-1]+l-1,l)%MOD)%MOD;
}
}
}
}
if(n&1) printf("%d\n",f[n][d][n>>1]);
else printf("%d\n",(f[n][d][n>>1]-C(f[n>>1][d-1][n>>1],2)+MOD)%MOD);
return 0;
}

Solution -「CF 724F」Uniformly Branched Trees的更多相关文章

  1. 「Codeforces 724F」Uniformly Branched Trees

    题目大意 如果两棵树可以通过重标号后变为完全相同,那么它们就是同构的. 将中间节点定义为度数大于 \(1\) 的节点.计算由 \(n\) 个节点,其中所有的中间节点度数都为 \(d\) 的互不同构的树 ...

  2. Solution -「CF 1237E」Balanced Binary Search Trees

    \(\mathcal{Description}\)   Link.   定义棵点权为 \(1\sim n\) 的二叉搜索树 \(T\) 是 好树,当且仅当: 除去最深的所有叶子后,\(T\) 是满的: ...

  3. Solution -「CF 917D」Stranger Trees

    \(\mathcal{Description}\)   Link.   给定一棵包含 \(n\) 个点的有标号树,求与这棵树重合恰好 \(0,1,\cdots,n-1\) 条边的树的个数,对 \(10 ...

  4. Solution -「CF 1342E」Placing Rooks

    \(\mathcal{Description}\)   Link.   在一个 \(n\times n\) 的国际象棋棋盘上摆 \(n\) 个车,求满足: 所有格子都可以被攻击到. 恰好存在 \(k\ ...

  5. Solution -「CF 1622F」Quadratic Set

    \(\mathscr{Description}\)   Link.   求 \(S\subseteq\{1,2,\dots,n\}\),使得 \(\prod_{i\in S}i\) 是完全平方数,并最 ...

  6. Solution -「CF 923F」Public Service

    \(\mathscr{Description}\)   Link.   给定两棵含 \(n\) 个结点的树 \(T_1=(V_1,E_1),T_2=(V_2,E_2)\),求一个双射 \(\varph ...

  7. Solution -「CF 923E」Perpetual Subtraction

    \(\mathcal{Description}\)   Link.   有一个整数 \(x\in[0,n]\),初始时以 \(p_i\) 的概率取值 \(i\).进行 \(m\) 轮变换,每次均匀随机 ...

  8. Solution -「CF 1586F」Defender of Childhood Dreams

    \(\mathcal{Description}\)   Link.   定义有向图 \(G=(V,E)\),\(|V|=n\),\(\lang u,v\rang \in E \Leftrightarr ...

  9. Solution -「CF 623E」Transforming Sequence

    题目 题意简述   link.   有一个 \(n\) 个元素的集合,你需要进行 \(m\) 次操作.每次操作选择集合的一个非空子集,要求该集合不是已选集合的并的子集.求操作的方案数,对 \(10^9 ...

  10. Solution -「CF 1023F」Mobile Phone Network

    \(\mathcal{Description}\)   Link.   有一个 \(n\) 个结点的图,并给定 \(m_1\) 条无向带权黑边,\(m_2\) 条无向无权白边.你需要为每条白边指定边权 ...

随机推荐

  1. 基于 Dash Bio 的生物信息学数据可视化

    Dash 是用于搭建响应式 Web 应用的 Python 开源库.Dash Bio 是面向生物信息学,且与 Dash 兼容的组件,它可以将生物信息学领域中常见的数据整合到 Dash 应用程序,以实现响 ...

  2. Python获取系统当前时间并进行类型转换

    # 1.使用Python获取系统当前时间print('---------下面是方法1-----------')import timeprint(time.strftime('%Y-%m-%d %H:% ...

  3. CKS 考试题整理 (04)-secret

    Task 在 namespace istio-system 中获取名为 db1-test 的现有secret的内容 将 username 字段存储在名为 /cks/sec/user.txt 的文件中, ...

  4. 使用 nuxt3 开发简约优雅的个人 blog

    起因 很早前我就有过搭建个人博客的想法,但是我希望使用纯前端实现,这样就不需要付出额外的后端维护成本,维护成本又低,而且更加安全.网上也有很多博客框架但是也不符合我的需求,所以我使用了nuxt3 + ...

  5. 手撕HashMap(二)

    这里再补充几个手撕HashMap的方法 1.remove() remove 方法参数值应该是键值对的键的值,当传入键值对的键的时候,remove 方法会删除对应的键值对 需要利用我们自己先前创建的 h ...

  6. python笔记:第四章使用字典

    1.1 概述 说白了就是键值对的映射关系 不会丢失数据本身关联的结构,但不关注数据的顺序 是一种可变类型 格式:dic = {键:值, 键:值} 键的类型:字典的键可以是任何不可变的类型,如浮点数,字 ...

  7. Maven项目配置

    pom.xml配置 配置编码格式为UTF-8 <properties> <project.build.sourceEncoding>UTF-8</project.buil ...

  8. JVM方法区

    JVM方法区 <Java虚拟机规范>中明确说明:"尽管所有的方法区在逻辑上是属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩."但对于HotSpo ...

  9. 源码解析Collections.sort ——从一个逃过单测的 bug 说起

    本文从一个小明写的bug 开始,讲bug的发现.排查定位,并由此展开对涉及的算法进行图解分析和源码分析. 事情挺曲折的,因为小明的代码是有单测的,让小明更加笃定自己写的没问题.所以在排查的时候,也经历 ...

  10. HBase Compaction 原理与线上调优实践

    作者:vivo 互联网存储技术团队- Hang Zhengbo 本文对 HBase Compaction 的原理.流程以及限流的策略进行了详细的介绍,列举了几个线上进行调优的案例,最后对 Compac ...