Gym102028G Shortest Paths on Random Forests 生成函数、多项式Exp
神仙题……
考虑计算三个部分:1、\(n\)个点的森林的数量,这个是期望的分母;2、\(n\)个点的所有森林中存在最短路的点对的最短路径长度之和;3、\(n\)个点的所有路径中存在最短路的点对的个数之和,这个是用来计算需要取到\(m\)的点对的数量。
对于1,这个就直接对着树的数量的EGF做多项式exp即可。因为点之间有序所以用EGF,\(n\)个点的树的数量由Cayley定理就是\(n^{n-2}\)。
对于3,考虑枚举一个连通块大小,那么这种连通块大小的所有树的存在最短路的点对之和就是\(n^{n-2} \binom{n}{2}\)。然后我们需要求这个连通块在哪些森林中出现过,我们就需要拼一个森林进去,所以直接拿这个的EGF跟1中求出来的多项式做一个卷积就可以了。
对于2,发现那个平方不是很好搞,于是可以考虑平方的组合意义,实际上就是在\(i,j\)路径上的边上有序地任取两条边。我们可以考虑先枚举两条边,然后再考虑这两条边会在哪些路径上做出贡献。注意到两条不重合的边会把树分为三个连通块,而两条重合的边会分为两个连通块,那么我们可以再次交换求和顺序,先枚举两个/三个连通块,然后考虑如何在这两个/三个连通块之间连边、选择\(i,j\)。
考虑三个连通块的情况,两个连通块的情况类似。注意到如果三个连通块大小为\(a_1,a_2,a_3\),边固定为1连向2、2连向3,\(i\)在1、\(j\)在3,那么连边的方式就有\(a_1a_2 \times a_2a_3\)种,选择起点的方式有\(a_1\)种,选择终点的方式有\(a_3\)种,那么总贡献就是\(a_1^2a_2^2a_3^2\),只和连通块大小有关。不难再构造一个生成函数,每个位置表示大小为\(x\)的连通块的贡献,那么这个生成函数的平方和三次方就是选择两个连通块和三个连通块的方案。
那么我们就只要考虑这个连通块会出现在哪些森林里,和3过程一样卷上1求出来的多项式就可以了。
值得注意的一点是,求2的过程中,因为有序枚举这两条边是存在两种方案的,所以选择三个连通块的所有方案需要乘上2;在求2的过程中,点对\(i,j\)和点对\(j,i\)都会被计算,所以2的所有答案还要除以2。
Gym102028G Shortest Paths on Random Forests 生成函数、多项式Exp的更多相关文章
- CF Gym102028G Shortest Paths on Random Forests
传送门 这题要求的期望,就是总权值(所有不在同一个连通块点对的贡献+同一连通块点对的贡献)/总方案(森林个数) 先求森林个数,森林是由一堆树组成的,而根据purfer序列,一棵\(n\)个点的有标号的 ...
- CF Gym 102028G Shortest Paths on Random Forests
CF Gym 102028G Shortest Paths on Random Forests 抄题解×1 蒯板子真jir舒服. 构造生成函数,\(F(n)\)表示\(n\)个点的森林数量(本题都用E ...
- Luogu4389 付公主的背包(生成函数+多项式exp)
显然构造出生成函数,对体积v的物品,生成函数为1+xv+x2v+……=1/(1-xv).将所有生成函数乘起来得到的多项式即为答案,设为F(x),即F(x)=1/∏(1-xvi).但这个多项式的项数是Σ ...
- LOJ6077「2017 山东一轮集训 Day7」逆序对 (生成函数+多项式exp?朴素DP!)
题面 给定 n , k n,k n,k ,求长度为 n n n 逆序对个数为 k k k 的排列个数,对 1 e 9 + 7 \rm1e9+7 1e9+7 取模. 1 ≤ n , k ≤ 100 ...
- LuoguP4389 付公主的背包【生成函数+多项式exp】
题目背景 付公主有一个可爱的背包qwq 题目描述 这个背包最多可以装10^5105大小的东西 付公主有n种商品,她要准备出摊了 每种商品体积为Vi,都有10^5105件 给定m,对于s\in [1,m ...
- P4389-付公主的背包【生成函数,多项式exp】
正题 题目链接:https://www.luogu.com.cn/problem/P4389 题目大意 \(n\)种物品,第\(i\)种大小为\(v_i\),数量无限.对于每个\(s\in[1,m]\ ...
- Bagging决策树:Random Forests
1. 前言 Random Forests (RF) 是由Breiman [1]提出的一类基于决策树CART的Bagging算法.论文 [5] 在121数据集上比较了179个分类器,效果最好的是RF,准 ...
- 以Random Forests和AdaBoost为例介绍下bagging和boosting方法
我们学过决策树.朴素贝叶斯.SVM.K近邻等分类器算法,他们各有优缺点:自然的,我们可以将这些分类器组合起来成为一个性能更好的分类器,这种组合结果被称为 集成方法 (ensemble method)或 ...
- 随机森林——Random Forests
[基础算法] Random Forests 2011 年 8 月 9 日 Random Forest(s),随机森林,又叫Random Trees[2][3],是一种由多棵决策树组合而成的联合预测模型 ...
随机推荐
- epoch,iteration与batchsize的区别
神经网络中epoch与iteration是不相等的 batchsize:中文翻译为批大小(批尺寸).在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个样本训练: iterat ...
- Java中在时间戳计算的过程中遇到的数据溢出问题
背景 今天在跑定时任务的过程中,发现有一个任务在设置数据的查询时间范围异常,出现了开始时间戳比结束时间戳大的奇怪现象,计算时间戳的代码大致如下. package com.lingyejun.authe ...
- 把pdf的内容转化为txt文件
import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.util.PDFTextStripper; import j ...
- java spring学习
目的:为后面学习spring mvc ssm spring boot 打基础. 从单词就能看到有s,记录自学过程,感慨spring 一篇文章都写不完 介绍(来源百度百科): Spring是一个开源框架 ...
- ubuntu之路——day15.1 只用python的numpy在底层检验参数初始化对模型的影响
首先感谢这位博主整理的Andrew Ng的deeplearning.ai的相关作业:https://blog.csdn.net/u013733326/article/details/79827273 ...
- 剑指offer:构建乘积数组
题目描述: 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]. ...
- vs2015编译OBS-Studio21.1.12
原文地址:http://www.freesion.com/article/37445100/ 参考:https://blog.csdn.net/su_vast/article/details/7498 ...
- python3新特性函数注释Function Annotations用法分析
本文分析了python3新特性函数注释Function Annotations用法.分享给大家供大家参考,具体如下: Python 3.X新增加了一个特性(Feature),叫作函数注释 Functi ...
- vue---封装request做数据请求
参考文章: https://www.cnblogs.com/qiuchuanji/p/10048805.html https://www.cnblogs.com/XHappyness/p/999387 ...
- Python3基础 yield send 变量名= yield i
Python : 3.7.3 OS : Ubuntu 18.04.2 LTS IDE : pycharm-community-2019.1.3 ...