Comet OJ - Contest #2 简要题解

Comet OJ - Contest #2 简要题解

cometoj

A

模拟,复杂度是对数级的。
code

B

首先易知\(p\in[l,r]\),且最终的利润关于\(p\)的表达式为\(\frac{(p-l)(\frac{L+R}{2}-p)}{r-l}\),二次函数求最值即可。
code

C

枚举独立集点数即可。\(\sum_{i=0}^n\binom nip^{\binom i2}\)
code

D

树上的任意一个满足\(|S|\ge2\)的点集\(S\)均有一个唯一的中心,即直径的中点(可能是一个点也可能是一条边),因此可以在该点集的中心处计算该点集的贡献。
枚举中心\(i\),枚举直径长度\(j\),要求在\(i\)点至少两棵不同子树里选与\(i\)距离恰好为\(j\)的点,距离小于\(j\)的点任选。复杂度\(O(n^2)\)
code

E

原图是一片环套树森林。首先考虑把森林缩掉,对于一个叶子节点\(v\)与其父亲\(u\),可以令\(p_u\gets p_u+(1-p_u)p_vs_v\),并删除点\(v\)。如此操作后图中就只剩下若干个环了。
对于环上的任意一点计算答案,可以先把这个点的出边断掉,再视作一条链暴力计算,复杂度\(O(n^2)\)。考虑当前一个人以\(x\)的概率醒来的时候,后一个人醒来的概率可以表示成\(ax+b\)的形式,其中\(a,b\)均为只与当前这个人有关的常量。不难发现这种运算满足结合率,因此对环维护前后缀,每次\(O(1)\)合并答案即可,复杂度\(O(n)\)
比赛的时候无脑上了棵线段树,做法上没有本质区别。code

F

被修修教育了。。。
我们要求对于每个\(i\),将第\(i\)个二项式除去后与\(a_i\)点乘的结果。

考虑分治。设\[L(x)=\prod_{i=1}^{n/2}(p_ix+1-p_i)=\sum_{i=0}^{n/2}l_ix^i\\R(x)=\prod_{i=n/2+1}^{n}(p_ix+1-p_i)=\sum_{i=0}^{n-n/2}r_ix^i\]

假设我们要求\(i\in[0,n/2]\)的答案,由于最终答案一定是\(\sum_{j=0}^{n/2-1}\sum_{k=0}^{n-n/2}l'_jr_ka_{j+k}\)的形式,而\(r_k\)对于左边的所有\(i\)都是定值,因此可以考虑令\(a'_j=\sum_{k=0}^{n-n/2}r_ka_{j+k}\)然后用新的\(a'\)递归左边,右边同理。

这样就只需要在每层分治时做两次卷积就好了,复杂度仍然是\(O(n\log^2n)\),不过常数优秀不少。

code


以下是原题解。

orz suika
先求出\(F(x)=\prod_{i=1}^n(p_ix+1-p_i)\),然后对于每个\(i\),计算\(\frac{F(x)}{p_ix+1-p_i}\)\(a_i\)数组点乘的结果。

为了方便处理,我们令\(w_i=\frac{1-p_i}{p_i}\)(题目保证\(p_i\in(0,1]\)),于是\(F(x)=\prod_{i=1}^np_i(x+w_i)\)。由于\(\prod_{i=1}^np_i\)是常数,故下文中均将其忽略。

不难发现问题大致是个退背包的模型,即先往背包里加入\(n\)个物品,然后每次删去一个。

假设当前求的是第\(k\)个物品的答案,考虑设\[F(x)=\prod_{i=1}^n(x+w_i)=\sum_{i=0}^nf_ix^i\\G(x)=\prod_{i=1,i\neq k}^n(x+w_i)=\sum_{i=0}^{n-1}g_ix^i\]
那么就有递推式
\[g_i=f_{i+1}-g_{i+1}w_k(0\le i<n,g_n=0)\]
将这个递推式暴力展开
\[g_i=\sum_{j=0}^{n-1-i}(-w_k)^jf_{i+j+1}\]
于是我们要求的东西就变成了
\[ans_k=\sum_{i=0}^{n-1}a_ig_i=\sum_{i=0}^{n-1}a_i\sum_{j=0}^{n-1-i}(-w_k)^jf_{i+j+1}\\=\sum_{j=0}^{n-1}(-w_k)^j\sum_{i=0}^{n-1-j}a_if_{i+j+1}\]
\(coef_j=\sum_{i=0}^{n-1-j}a_if_{i+j+1}\),则\(ans_k=\sum_{j=0}^{n-1}coef_j(-w_k)^j\),多项式多点求值即可。求\(coef_j\)的过程只需要一个卷积,因此总复杂度\(O(n\log^2n)\)
code

posted @ 2019-04-27 10:10 租酥雨 阅读(...) 评论(...) 编辑 收藏