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. Go应用性能优化的8个最佳实践,快速提升资源利用效率!

    作者|Ifedayo Adesiyan 翻译|Seal软件 链接|https://earthly.dev/blog/optimize-golang-for-kubernetes/ 优化服务器负载对于确 ...

  2. Linux系统运维之Web服务器Nginx安装

    一.介绍 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.本文先整理web服务器内容. 二.环境及软件版本 操作 ...

  3. React ISR 如何实现 - 最后的 Demo

    之前写了两个 demo 讲解了如何实现 SSR 和 SSG,今天再写个 demo 说在 ISR 如何实现. 什么是 ISR ISR 即 Incremental Static Regeneration ...

  4. 图书商城Vue+Element+Node项目练习(...)

    本系列文章是为学习Vue的项目练习笔记,尽量详细记录一下一个完整项目的开发过程.面向初学者,本人也是初学者,搬砖技术还不成熟.项目在技术上前端为主,包含一些后端代码,从基础的数据库(Sqlite).到 ...

  5. 2023年最具威胁的25种安全漏洞(CWE TOP 25)

    摘要: CWE Top 25 是通过分析美国国家漏洞数据库(NVD)中的公共漏洞数据来计算的,以获取前两个日历年 CWE 弱点的根本原因映射. 本文分享自华为云社区<2023年最具威胁的25种安 ...

  6. PB从入坑到放弃(四)常用函数

    写在前面 这一期呢,来整理下PB 常用的函数,包括系统的和一些自己封装好的函数 一.字符串相关 1.1 Len函数 获取字符串长度 ① 语法 Len(string) ②参数 string-->s ...

  7. Linux安装与配置FTP服务

    1.FTP安装与配置 1.1.FTP安装 一般使用yum直接在线安装 # 在线安装FTP yum install -y vsftpd 安装完成后查看ftp状态 # 查看ftp状态 systemctl ...

  8. 我真的不想再用mybatis和其衍生框架了选择自研亦是一种解脱

    我真的不想再用mybatis和其衍生框架了选择自研亦是一种解脱 文档地址 https://xuejm.gitee.io/easy-query-doc/ GITHUB地址 https://github. ...

  9. 使用调试工具调试博图TCP连接所遇到的问题

    PLC端使用的指令 PLC为服务器端,电脑为客户端,以上为服务器与客户端的配置参数 启动连接后连接成功,PLC的IP地址也可以ping通 ------------------------------- ...

  10. linux文本编辑YCM报错

    linux文本编辑YCM报错 刚从github安装了vimplus,可是发现存在不少的问题.索性给直接记录一下. The ycmd server SHUT DOWN (restart with ':Y ...