LGP8290口胡
作者:互联网
场外选手再次口胡
这种东西如果是链就很好做,并且有链的部分分。。。那么就照着这个方向想想吧。
考虑计算对于一个序列,全部都被填了数字的方案数。
容易发现枚举最大值有很简单的 \(O(nK)\) 做法:
\[\sum_{x=0}^{\infty}\prod_{i=1}^{n}(\min(x+K,r_i)-\max(x,l_i))-\prod_{i=1}^{n}(\min(x+K-1,r_i)-\max(x,l_i)) \]两部分差的不多,所以只用考虑一边。
并且容易发现这个是点权的 \(0\) 次和,所以先暂且不考虑 \(1\) 次和,做法可以凭感觉确定是类似的(
容易发现,可以把 \(l_i\) 和 \(r_i\) 分成四类贡献。
然后,我们将所有的 \(l_i,r_i,l_i+K,r_i+K,l_i-K,r_i-K\) 全部拉出来排序,每个 \(x\) 能够对应排序后的一段。然后容易发现,一段对一个节点的贡献是固定的。
也就是说,如果 \(x\) 在离散化后的某个区间上,那么一个节点对其的贡献一定是一个和 \(x\) 有关的一次多项式。
于是我们枚举 \(x\) 在哪一段,问题就变成了先对每一段计算多项式,然后计算 一棵树上所有路径的多项式之积之和。
这种典中典问题当然是用点分治最好。。。但是模数不是 \(998244353\)。
考虑 NTT 的本质是插值。于是我们就插值。可以知道答案多项式一定是 \(O(n)\) 次的,于是代入 \(O(n)\) 跑一遍拉插就行了。
一棵树上所有路径的点权之积之和,这种典中典问题可以 DP \(O(n+\log mod)\) 解决掉。
复杂度 \(O(n^3+n^2\log mod)\)。
标签:log,多项式,之积,LGP8290,一段,prod,mod 来源: https://www.cnblogs.com/lmpp/p/16167038.html