链接

小 C 在自己家的花园里种了一棵苹果树, 树上每个结点都有恰好两个分支. 经过细心的观察, 小 C 发现每一天这棵树都会生长出一个新的结点.

第一天的时候, 果树会长出一个根结点, 以后每一天, 果树会随机选择一个当前树中没有长出过结点 的分支, 然后在这个分支上长出一个新结点, 新结点与分支所属的结点之间连接上一条边.

小 C 定义一棵果树的不便度为树上两两结点之间的距离之和, 两个结点之间 的距离定义为从一个点走到另一个点的路径经过的边数.

现在他非常好奇, 如果 \(N\) 天之后小 G 来他家摘苹果, 这个不便度的期望 \(E\) 是多少. 但是小 C 讨厌分数, 所以他只想知道 \(E \times N!\)对 \(P\) 取模的结果, 可以证明这是一个整数.

题解

新建一个节点之后,会减少一个空位,增加2个空位,因此空位数加1

所以节点数为 \(n\) 的树的方案数为 \(1\times 2\times \dots \times n=n!\)

那个所有点的距离之和,考虑每个点和它父亲之间的边的贡献,设 \(siz\) 为它的子树大小。

答案为 \(siz\times (n-siz)\)

考虑枚举点 \(i\) 和 \(siz\) ,下面问题转化为求合法的树的方案数。

首先构造出 \(i\) 个点的树,方案数为 \(i!\)

然后把 \(siz-1\) 个点挂到 \(i\) 下面,要求这些点标号都大于 \(i\) ,方案数为 \(C_{n-i}^{siz-1}\)

其他点的方案数?还剩下 \(n-i-siz+1\) 个点。

我们假设那 \(siz-1\) 个点还没有挂上去, \(i\) 下面有两个空位,但是都不能放,因此方案数为 \(\prod_{k=1}^{n-i-siz+1}(i+k-2)\)

把上面的方案数乘起来,整理一下,得到

\[Ans=\sum_{i=1}^n\sum_{siz=1}^{n-i+1}i(i-1)siz(n-siz)!siz!C_{n-i}^{siz-1}
\]

复杂度 \(O(n^2)\)

  1. #include<stdio.h>
  2. #include<cctype>
  3. #include<algorithm>
  4. #define REP(i,a,b) for(int i(a);i<=(b);++i)
  5. #define dbg(...) fprintf(stderr,__VA_ARGS__)
  6. template<typename T,typename U>inline bool smin(T&x,const U&y){return x>y?x=y,1:0;}
  7. template<typename T,typename U>inline bool smax(T&x,const U&y){return x<y?x=y,1:0;}
  8. const int N=2005;
  9. int n,p,C[N][N],fac[N];
  10. int main(){
  11. scanf("%d%d",&n,&p);
  12. C[0][0]=fac[0]=1;
  13. REP(i,1,n){
  14. C[i][0]=1;fac[i]=1ll*fac[i-1]*i%p;
  15. REP(j,1,n)if((C[i][j]=C[i-1][j]+C[i-1][j-1])>=p)C[i][j]-=p;
  16. }
  17. int ans=0;
  18. REP(i,2,n)REP(j,1,n-i+1)ans=(ans+1ll*i*j*(i-1)%p*fac[n-j]%p*fac[j]%p*C[n-i][j-1])%p;
  19. printf("%d\n",ans);
  20. return 0;
  21. }

[BZOJ5305][HAOI2018]苹果树 组合数学的更多相关文章

  1. [HAOI2018]苹果树(组合数学,计数)

    [HAOI2018]苹果树 cx巨巨给我的大火题. 感觉这题和上次考试gcz讲的那道有标号树的形态(不记顺序)计数问题很类似. 考虑如果对每个点对它算有贡献的其他点很麻烦,不知怎么下手.这个时候就想到 ...

  2. BZOJ5305 [Haoi2018]苹果树 【组合数学】

    题目链接 BZOJ5305 题解 妙啊 要求的是所有可能的树形的所有点对距离和 直接考虑点的贡献肯定想不出,这样的所有点对距离问题通常转化为边的贡献 考虑一条边会产生多少贡献 我们枚举\(i\)节点的 ...

  3. BZOJ5305 HAOI2018苹果树(概率期望+动态规划)

    每种父亲编号小于儿子编号的有标号二叉树的出现概率是相同的,问题相当于求所有n个点的此种树的所有结点两两距离之和. 设f[n]为答案,g[n]为所有此种树所有结点的深度之和,h[n]为此种树的个数. 枚 ...

  4. [BZOJ5305][HAOI2018]苹果树(DP)

    首先注意到每种树都是等概率出现的,于是将问题转化成计数求和问题. f[n]表示所有n个点的树的两两点距离和的总和. g[n]表示所有n个点的树的所有点到根的距离和的总和. h[n]表示n个点的树的可能 ...

  5. [BZOJ5305][Haoi2018]苹果树 组合数

    题目描述 小 C 在自己家的花园里种了一棵苹果树, 树上每个结点都有恰好两个分支. 经过细心的观察, 小 C 发现每一天这棵树都会生长出一个新的结点. 第一天的时候, 果树会长出一个根结点, 以后每一 ...

  6. [BZOJ5305] [HAOI2018] 苹果树 数学 组合计数

    Summary 题意很清楚: 小 \(C\) 在自己家的花园里种了一棵苹果树, 树上每个结点都有恰好两个分支. 经过细心的观察, 小 \(C\) 发现每一天这棵树都会生长出一个新的结点. 第一天的时候 ...

  7. BZOJ5305: [HAOI2018]苹果树

    传送门 果然只有我这种菜鸡才会用这种菜鸡做法QwQ 对于一类要求期望的题目,有一个无脑的做法: 设概率为 \(f\),期望为 \(g\) 每次合并两个二元组 \(<f_1,g_1>,< ...

  8. 【BZOJ5305】[HAOI2018]苹果树(组合计数)

    [BZOJ5305][HAOI2018]苹果树(组合计数) 题面 BZOJ 洛谷 题解 考虑对于每条边计算贡献.每条边的贡献是\(size*(n-size)\). 对于某个点\(u\),如果它有一棵大 ...

  9. [洛谷P4492] [HAOI2018]苹果树

    洛谷题目链接:[HAOI2018]苹果树 题目背景 HAOI2018 Round2 第一题 题目描述 小 C 在自己家的花园里种了一棵苹果树, 树上每个结点都有恰好两个分支. 经过细心的观察, 小 C ...

随机推荐

  1. css兼容性问题总结

    DIV+CSS设计IE6.IE7.FF 兼容性 DIV+CSS网页布局这是一种趋势,我也开始顺应这股趋势了,不过在使用DIV+CSS网站设计的时候,应该注意css样式兼容不同浏览器问题,特别是对完全使 ...

  2. linux 下的小知识

    Linux中有7种启动级别 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆运行级别2:多用户状态(没有NFS ...

  3. django orm 基本

    1 modle基本数据类型 class Test(models.Model): """测试学习用""" Auto = models.Auto ...

  4. 常见VPS buy地址

    ***,也是最适合新手使用的: https://bwh1.net/ (支持支付宝) vultr,以下是我的分享链接: https://www.vultr.com/(支持支付宝) SugarHosts: ...

  5. 【BZOJ 1089】[SCOI2003]严格n元树

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 设fi表示深度为i的树个数,si是fi的前缀和,即si为深度不超过i树的个数. 那么si=s[i-1]^n + 1 就是说 先选一个 ...

  6. 2015 Multi-University Training Contest 3 hdu 5317 RGCDQ

    RGCDQ Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submi ...

  7. mysql-面试题目1

    一.数据库的ACID 原子性(Atomicity):保证事务中的所有操作全部执行或全部不执行. 一致性(Consistency):保证数据库始终保持数据的一致性——事务操作之前和之后都是一致的. 隔离 ...

  8. Android Shape使用

    说明 在Android开发中,使用shape可以很方便的帮我们画出想要的背景,相对于png图片来说,使用shape可以减少安装包的大小,而且能够更好的适配不同的手机. 使用 先贴出官网上的说明: &l ...

  9. Redis允许远程连接

    默认安装启动redis后,只能本地连接,无法远程连接上,原因是redis安全策略默认本机访问,所以远程访问的话需要将 配置文件redis.cof 中的 bind 127.0.0.1 前面的#注释掉, ...

  10. POJ 3122 Pie 二分答案

    题意:给你n个派,每个派都是高为一的圆柱体,把它等分成f份,每份的最大体积是多少. 思路: 明显的二分答案题-- 注意π的取值- 3.14159265359 这样才能AC,,, //By Sirius ...