洛谷题目链接:[HAOI2018]苹果树

题目背景

HAOI2018 Round2 第一题

题目描述

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

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

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

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

输入输出格式

输入格式:

从标准输入中读入数据. 一行两个整数 \(N\), \(P\) .

输出格式:

输出到标准输出中. 输出一个整数表示答案.

输入输出样例

输入样例#1:

3 610745795

输出样例#1:

24

输入样例#2:

305 1000000007

输出样例#2:

865018107

说明

以上是所有 \(N = 3\) 时可能的苹果树形态, 其中编号表示这个结点是第几天生 长出来的, 显然每种情况两两结点的距离均为 \(4\) .

题解: 这个枚举方式比较神奇...我也不太清楚为什么可以做到不重不漏,有人会可以帮我分析一下...

直接讲方法吧:

首先考虑如何计算贡献,我们分每条边来计算贡献,那么总贡献就是\(\sum size*(n-size)\)

考虑当前枚举到了节点\(i\),它有一颗大小为\(j\)的子树,那么前\(i\)个节点可能组成的方案数是\(i!\),这个大小为\(j\)的子树的方案数有\(j!\)种,然后剩下的\(n-i-j\)个节点随便放,第一个节点可以放置的方案是\(i\)种,第二个是\(i+1\)种,那么剩下节点随便放的贡献就是\(\frac{(n-j)!}{(i-1)!}\),总贡献就是:\[\sum_{i=1}^{n}\sum_{j=1}^{n-i}i!*2*C_{n-i}^j*j!*j*(n-j)*\frac{(n-j)!}{(i-1)!}\]

因为不一定存在逆元,可以先递推杨辉三角,然后把最后那部分用组合数乘阶乘的形式表示出来.

当然这题也有\(DP\)的解法,有兴趣可以自己看看别的题解

#include<bits/stdc++.h>
using namespace std;
const int N = 2000+5;int n, mod, fac[N], c[N][N], ans = 0;int main(){cin >> n >> mod; c[0][0] = fac[0] = fac[1] = 1;for(int i = 1; i <= n; i++){c[i][0] = 1;for(int j = 1; j <= n; j++) c[i][j] = (c[i-1][j]+c[i-1][j-1])%mod;}for(int i = 1; i <= n; i++) fac[i] = 1ll*fac[i-1]*i%mod;for(int i = 1; i <= n; i++)for(int j = 1; j <= n-i; j++)(ans += 1ll*fac[i]*2%mod*c[n-i][j]%mod*fac[j]%mod*j%mod*(n-j)%mod*c[n-j-1][n-i-j]%mod*fac[n-i-j]%mod) %= mod;cout << ans << endl;return 0;
}

转载于:https://www.cnblogs.com/BCOI/p/10489953.html

[洛谷P4492] [HAOI2018]苹果树相关推荐

  1. P4492 [HAOI2018]苹果树(组合数学+递推)

    LINK 一颗苹果树长 n n n天,第一天长出根节点,每个节点有左右两个分支 以后每一天,在这棵树的所有分支处随机选择一个,长出一个新节点 定义这个树的不便度为树上两两节点的距离和 E E E,输出 ...

  2. 洛谷 P2015 二叉苹果树 题解

    洛谷 P2015 二叉苹果树 题解 洛谷 P2015 题目 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点) 这棵树共有NNN个结点(叶子点或者树枝分叉点),编号为1-NNN ...

  3. 洛谷找最小值c语言,洛谷 P1478 陶陶摘苹果(升级版) C语言实现

    原题地址:P1478 淘淘摘苹果(升级版)- 洛谷 题目描述 又是一年秋季时,陶陶家的苹果树结了n个果子.陶陶又跑去摘苹果,这次她有一个a公分的椅子.当他手够不着时,他会站到椅子上再试试. 这次与NO ...

  4. 洛谷 深基 第4部分 基础数学与数论(19-21课)

    洛谷 深基 第4部分 基础数学与数论  第19章 位运算与进制转换 P1143 进制转换 https://www.luogu.com.cn/problem/P1143 洛谷P1143 进制转换的Pyt ...

  5. 【洛谷】入门2 分支结构

    原题传送门 点我 P5710 [深基3.例2]数的性质 题目描述 一些数字可能拥有以下的性质: 性质 1:是偶数: 性质 2:大于 4 且不大于 12. 小A 喜欢这两个性质同时成立的数字:Uim 喜 ...

  6. 洛谷P1478 陶陶摘苹果(升级版)视频题解

    洛谷P1478 陶陶摘苹果(升级版)视频题解 洛谷P1478 陶陶摘苹果(升级版)视频题解 题目描述 又是一年秋季时,陶陶家的苹果树结了 nn 个果子.陶陶又跑去摘苹果,这次他有一个 aa 公分的椅子 ...

  7. 洛谷题:陶陶摘苹果(升级版)题解

    题目来源:洛谷社区https://www.luogu.org/ 题目描述 又是一年秋季时,陶陶家的苹果树结了n个果子.陶陶又跑去摘苹果,这次她有一个a公分的椅子.当他手够不着时,他会站到椅子上再试试. ...

  8. P1478 陶陶摘苹果(升级版)java 洛谷

    P1478 陶陶摘苹果(升级版)java 洛谷 一.题目描述: 题目描述 又是一年秋季时,陶陶家的苹果树结了 nn 个果子.陶陶又跑去摘苹果,这次他有一个 aa 公分的椅子.当他手够不着时,他会站到椅 ...

  9. 洛谷——【入门2】分支结构

    文章目录 题单简介 [深基1-2]小学数学 N 合一 题目描述 问题 1 问题 2 问题 3 问题 4 问题 5 问题 6 问题 7 问题 8 问题 9 问题 10 问题 11 问题 12 问题 13 ...

最新文章

  1. 【转】Android Activity原理以及其子类描述,androidactivity
  2. 只有大规模算力才能救AI?强化学习之父 vs 牛津教授掀起隔空论战
  3. cross join
  4. NAPI模式--中断和轮询的折中以及一个负载均衡的问题
  5. IE6中PNG图片背景无法透明显示的最佳解决方案
  6. how to write academic english well?
  7. Ubuntu在线体验
  8. socket异步处理问题
  9. ddos常见攻击报文
  10. 【clickhouse】clickhouse 利用Grafana与系统表监控ClickHouse查询
  11. Linux 命令(19)—— tar 命令
  12. Ruby程序语言入门
  13. 最简单的正交试验教程
  14. CSS width中的max-content,min-content,fit-content的区别
  15. 冯东阳:解读纯文本链接到底算不算外链
  16. touchGFX 添加中文字库
  17. IntelliJ IDEA 中如何配置JDK
  18. LPL2020夏季常规赛7月22日RW vs ES,WE vs BLG前瞻预测
  19. Python彩色图片转手绘风格
  20. 移植caffe到hi3519

热门文章

  1. 计算日期差的方法c语言,C语言计算日期差的方法示例
  2. m3u8.sqlite转mp4(txkt,文末附程序下载地址)
  3. 一个STAF的RC21的问题的解决和思考
  4. 设计模式初探之设计模式六大原则(3):依赖倒置原则
  5. android如何用真机测试,android studio如何使用真机测试app
  6. win系统的阿里云服务器部署IDEASpringBoot项目保姆级教程
  7. 【项目实战课】基于Pytorch的UGATIT人脸动漫风格化实战
  8. Alpha版本冲刺(四)
  9. java中的steam流
  10. Java实现谷歌验证器