点此看题面

大致题意: 给你某些点的度数,其余点度数任意,让你求有多少种符合条件的无根树。

\(prufer\)序列

一道弱化版的题目:【洛谷2290】[HNOI2004] 树的计数。

这同样也是一道利用\(prufer\)序列求解的题。

还是考虑到由\(prufer\)序列得到的结论:对于给定度数为\(d_{1\sim n}\)的一棵无根树共有\(\frac{(n-2)!}{\prod_{i=1}^n(d_i-1)!}\)种情况

但这次就不能直接套公式了。

推式子

考虑对于已知度数的点,设其个数为\(k\),且\(d_i-1\)的和为\(s\)。

然后对于这些已知的点,我们易得方案数为:

\[\frac{s!}{\sum_{i=1}^k(d_i-1)!}\]

由于这\(k\)个点可以任选,因此还需乘上一个组合数,得到:

\[C_{n-2}^k\cdot\frac{s!}{\sum_{i=1}^k(d_i-1)!}\]

则剩下的\(n-2-s\)个位置是可以任意排列的,而又共有\(n-k\)个点,因此总方案数为:

\[C_{n-2}^k\cdot\frac{s!}{\sum_{i=1}^k(d_i-1)!}*(n-k)^{n-2-s}\]

然后就可以直接算了。

求解答案

\(Python\)大法好,无需高精度除法,也无需质因数分解\(23333\)。

代码

n=(int)(input());k=0;s=0;a=[0 for i in range (n+5)];#初始化
for i in range(1,n+1):a[i]=(int)(input());if a[i]==0:print(0);exit();#判断无解if a[i]!=-1:k+=1;s+=a[i]-1;#统计k与s
if s>n-2:print(0);exit();#判断无解
f=[0 for i in range(n+5)];f[0]=1;#建立阶乘数组
for i in range(1,n+1):f[i]=f[i-1]*i;#预处理阶乘
ans=ans=(f[n-2]//f[s]//f[n-2-s])*f[s];#初始化ans为C(n-2,s)*s!
for i in range(1,n+1):if a[i]!=-1:ans//=f[a[i]-1];#计算答案
print(ans*pow(n-k,n-2-s));#计算答案

转载于:https://www.cnblogs.com/chenxiaoran666/p/Luogu2624.html

【洛谷2624】[HNOI2008] 明明的烦恼(Python+利用prufer序列结论求解)相关推荐

  1. BZOJ 1005: [HNOI2008]明明的烦恼

    BZOJ 1005: [HNOI2008]明明的烦恼 Description 自从明明学了树的结构,就对奇怪的树产生了兴趣......给出标号为1到N的点,以及某些点最终的度数,允许在 任意两点间连线 ...

  2. bzoj 1005: [HNOI2008]明明的烦恼(prufer数列)

    1005: [HNOI2008]明明的烦恼 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 5171  Solved: 2021 [Submit][St ...

  3. 洛谷——P1047 校门外的树 python实现

    洛谷--P1047 校门外的树 python实现 l, m = map(int, input().split(' ')) trees = [True]*(l+1) for i in range(m): ...

  4. python输出一个简单的田字格、用函数简化其代码_Solution Method: 洛谷 P1001 A+B Problem(Python 3 基本输入输出方法及代码简化)...

    本文从 洛谷 P1001 A+B Problem 为例,讲一讲 Python 3 在算法竞赛中的一些基本输入输出方法,以及一些利用 Python 3 特性的代码简化 以下为本文将涉及的内容: inpu ...

  5. 洛谷 P3195 [HNOI2008]玩具装箱 —— 斜率优化

    This way 题意: 题解: 洛谷的题解就写的蛮好,首先对于斜率优化,先将它的转移方程写出来,然后对于只包含i的设为A,只包含j的设为B,然后对于含有A和B的项就是二元一次方程中的k和x 这个就可 ...

  6. BZOJ1005 [HNOI2008]明明的烦恼

    Description 自从明明学了树的结构,就对奇怪的树产生了兴趣......给出标号为1到N的点,以及某些点最终的度数,允许在 任意两点间连线,可产生多少棵度数满足要求的树? Input 第一行为 ...

  7. 洛谷 - P2163 [SHOI2007]园丁的烦恼(不带修二维数点-树状数组/主席树)

    题目链接:点击查看 题目大意:二维平面坐标系中给出 nnn 个坐标点,然后是 mmm 次询问,每次询问需要回答一个闭合矩阵中有多少个点 题目分析:想挂树套树来着,但是复杂度有点大.本题不带修且可以离线 ...

  8. 洛谷 P2163 [SHOI2007]园丁的烦恼 (离线sort,树状数组,解决三维偏序问题)

    P2163 [SHOI2007]园丁的烦恼 题目描述 很久很久以前,在遥远的大陆上有一个美丽的国家.统治着这个美丽国家的国王是一个园艺爱好者,在他的皇家花园里种植着各种奇花异草. 有一天国王漫步在花园 ...

  9. 数组——洛谷#P1428 小鱼比可爱(Python实现)

    题目描述 人比人,气死人:鱼比鱼,难死鱼.小鱼最近参加了一个"比可爱"比赛,比的是每只鱼的可爱程度.参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示这只 ...

最新文章

  1. 改变UITableView的headerView、footerView背景颜色
  2. 那些感动过我的句子(英文版)
  3. RabbitMQ的元数据重建
  4. file获取文件后缀_Python 工匠:高效操作文件的三个建议
  5. C罗捧得史上首个区块链得分王奖杯 1600名支付宝用户获“同款”
  6. powershell_PowerShell图表功能概述
  7. 安卓使用MediaPlayer自定义音频视频播放器
  8. 职场,最需要的是主动
  9. Tp 引入 simple_html_dom.php
  10. OpenGL超级宝典笔记——纹理映射Mipmap
  11. 华为手机碎屏后如何导出数据_手机屏幕坏了怎么把数据导出来
  12. centOS7 更改主机名localhost.localdomain
  13. DateUtil时间工具类的基本使用
  14. TwinCAT学习笔记3--创建PLC程序控制2台EtherCAT变频器
  15. oligo包常用函数
  16. ubuntu18.04 使用scp命令
  17. rust future async/await
  18. python excel取列_Python 读取excel指定的列
  19. 【躲过裁员,成功上岸】发现小公司有不好的苗头,赶紧学习
  20. nginx免安装二进制包制作(安装推荐)

热门文章

  1. win10新版本被移除的旧特性
  2. 正则表达式之初入江湖
  3. salt实现lamp自动化部署
  4. 思科中国创新中心落户广州 打造年产值超千亿元万物互联“智慧城市”
  5. win8学习--------计时器
  6. linux top 命令可视化_linux性能监控:CPU监控命令之top命令
  7. 重庆科技学院c语言程序设计报告,2020年重庆科技学院《911程序设计综合》硕士研究生招生复试大纲...
  8. java设计模式之备忘_[译]Java 设计模式之备忘录
  9. ai怎么生成条形码_中琅条码生成软件如何制作SCC-14条码
  10. Java 算法 超级玛丽