首页 > 其他分享 >P10013 Tree Topological Order Counting 题解

P10013 Tree Topological Order Counting 题解

时间:2024-02-08 20:13:36浏览次数:49  
标签:dfrac siz 方案 选数 拓扑 P10013 Tree 题解 binom

首先题目里面写了每一个数都有权值,一般这种题只能去想求出每一个的具体方案数,那么也就是我们得求出 \(h_{i,j}\) 表示在所有合法拓扑序中 \(a_i=j\) 的方案数。

一颗树的拓扑序数量是 \(\dfrac{n!}{\prod siz_i}\),相信大家都知道。

因为我们需要保证这一棵树满足拓扑排序的条件,不难先去考虑 \(a_x=v\),并且我们确定 \(x\) 的祖先的选数情况这时的方案数是多少。

不妨假设从 \(1\) 到 \(x\) 的数分别是 \(v_1,v_2,v_3\dots v_k\),点分别是 \(p_1,p_2,p_3\dots p_k\)。

那么我们首先考虑 \(p_k\) 子树内选数情况是 \(\binom{n-v_k}{siz_{p_k}-1}\),然后再去考虑 \(p_{k-1}\) 子树内选数情况,容易推出是 \(\binom{n-v_{k-1}-siz_{p_k}}{siz_{p_{k-1}}-siz_{p_k}-1}\),以此类推,我们将这一部分的乘积叫做选数方案

然后对于一些无关的子树直接用树的拓扑序数量把方案数算了就行。

这样我们就知道 \(a_x=v\) 并且知道 \(1 \to x\) 路径上的所有数的方案数怎么算了。

考虑 \(y\) 是 \(x\) 儿子,\(a_y=z\),对于 \(y\) 而言,选数方案会有什么变化,你会发现 \(P_{y,z}=\dfrac{P_{x,v}}{\binom{n-v}{siz_{x}-1}}\binom{n-z}{siz_y-1}\binom{n-v-siz_y}{siz_x-siz_y-1}\),其中 \(P_{i,j}\) 表示 \(i\) 这个点选 \(j\) 的选数方案

上面这个式子中只和 \(x,v,y,z\) 有关系,其它的都是常量。

写出 \(P\) 的递推式子:\(P_{i,j}=\binom{n-j}{siz_i-1}\sum_{k < j} \dfrac{P_{u,k}}{\binom{n-k}{siz_u-1}}\binom{n-k-siz_i}{siz_u-siz_i-1}\),其中 \(u\) 是 \(i\) 父亲节点。

\(ans_x=\sum P_{x,i}b_iT\),其中 \(T\) 是无关的子树的方案数。

关于 \(P\) 的转移容易做到 \(O(1)\),总时间复杂度 \(O(n^2)\)。

标签:dfrac,siz,方案,选数,拓扑,P10013,Tree,题解,binom
From: https://www.cnblogs.com/OccasionalDreamer/p/18012095

相关文章

  • P10068 [CCO2023] Line Town 题解
    好题,但是感觉写起来有点屎。题目大意给定一个序列\(a\),你每次可以选择\(i\in[1,n-1]\),交换\(a_i,a_{i+1}\),并且给\(a_i,a_{i+1}\)取相反数。问你最少需要多少次交换才能使得序列非降,可能无解。做法首先考虑给偶数位置初始乘上\(-1\),然后操作变成交换相邻两个数,下面提......
  • CF1706E 题解
    你谷题目传送门CF题目传送门题目大意给定一个\(n\)个点\(m\)条边的无向图,询问\(q\)次,每次询问会指定两个正整数\(l,r\),问要使对于\(l\leqa\leqb\leqr\)的所有\(a,b\)均有路径可以互相到达,最少需要加入前多少条边。思路考虑到每一次询问实质上就是问你在按......
  • [COCI2007-2008#1] ZAPIS 题解
    题目传送门前置知识区间型动态规划思考过程这题也算是一道很经典的问题了(?)。看见\(n\leq200\),不难想到复杂度为\(O(n^3)\)的区间型动态规划。题面中有这么一段话。空串是规则括号序列。如果\(\textttA\)是规则括号序列,那么\(\texttt{(A)[A]{A}}\)都是规则括号......
  • CF1735D Meta-set 题解
    题目大意给定\(n\)张卡牌,每张卡牌有\(k\)个属性,第\(i\)张卡牌的第\(j\)个属性为\(c_{i,j}\)。一个由\(3\)张卡牌\(x,y,z\)组成的集合被称作好的,当且仅当对于\(1\leqi\leqk\)均有\(c_{x,i}=c_{y,i}=c_{z,i}\)或者\(c_{x,i},c_{y,i},c_{z,i}\)两两不相等。......
  • CF1793E Velepin and Marketing 题解
    题目大意有\(n\)个读者,第\(i\)年他们要一起读\(k_i\)本书,每一本书至少要让一个人读,每一个人也只能读恰好一本书。如果某一个人\(j\),如果有\(a_j\)个人这一年里和他读了同一本书,那么他就会感到满足。对于所有的\(q\)组询问,每组给定一个\(k_i\),求感到满足的人数的最......
  • CF1735E House Planning 题解
    题目大意一条直线上有\(n\)个房子和两个人,房子的坐标\(d_1,d_2,d_3\dotsd_n\),以及两个人坐标为\(p_1,p_2\)。现在会告诉你两个集合\(S_1=\{|p_1-d_i|,1\leqi\leqn\}\)以及\(S_2=\{|p_2-d_i|,1\leqi\leqn\}\)。这个写法可能不是很规范,但为了美观就写成这样了。......
  • CF1847E Triangle Platinum? 题解
    感谢@swiftc管理反馈的信息,对于题目大意确定的东西进行了完善。交互题。题目大意有一个长度为\(n\)的序列\(a\)满足\(1\leqa_i\leq4\),现在你可以进行不超过\(5500\)次询问,每次询问询问三个数\(1\leqi<j<k\leqn\),你将会得到\(a_i,a_j,a_k\)构成的三角形......
  • element-plus 2.4.1版本 el-tree踩坑
    element-plus2.4.1版本el-tree设置属性props中的label时,无法指定,例如<el-tree:data="datas.tree_data"show-checkboxnode-key="menu_id":props="{//label:function(data,node){//returndata.menu_name;//},......
  • [ABC327G] Many Good Tuple Problems 题解
    Description对于一对长度均为\(M\)且元素值在\(\left[1,N\right]\)之间的序列\((S,T)\),定义其为好的当且仅当:存在一个长度为\(N\)的\(01\)序列\(X\),使得其满足如下条件:对于任意\(i\in\left[1,M\right]\),有\(X_{S_i}\neqX_{T_i}\)。给定\(N,M\),求在......
  • [LeetCode] 2641. Cousins in Binary Tree II
    Giventherootofabinarytree,replacethevalueofeachnodeinthetreewiththesumofallitscousins'values.Twonodesofabinarytreearecousinsiftheyhavethesamedepthwithdifferentparents.Returntherootofthemodifiedtree.Note......