第五十一次
A
依次加入每个数,栈维护当前无法合并的数,每次把加入的数和栈顶尽量多个数合并。bitset
维护质因子来维护这个过程。
B
注意到 L,R
的狗的交友方案集合 $S$ 和 U,D
的狗的交友方案集合 $T$ 相互独立,
设 $f(x)$ 表示 $x$ 这种交友方案的价值,简单推导可知答案为 $|T|\sum\limits_S f(x)+|S|\sum\limits_Tf(x)$,
只需要求 $|S|,|T|,\sum\limits_Sf(x),\sum\limits_Tf(x)$,以求 $|S|,\sum\limits_S f(x)$ 为例。
注意到每行的交友方案集合 $s_i$ 相互独立,则 $|S|=\prod|s_i|,\sum\limits_Sf(x)=\sum\dfrac{|S|\sum\limits_{s_i}f(x)}{|s_i|}$,只需求 $|s_i|,\sum\limits_{s_i}f(x)$。
问题转化为,求每行的交友方案的个数、价值和。随便拿出一行考虑。
设 $f_{i,j}/g_{i,j}$ 表示前 $i$ 只狗,有 $j$ 只 R
狗已算贡献但还未匹配的方案的价值和 / 个数,考虑转移。
考虑 $i+1$ 这只狗不交朋友,则有转移:
$$ \begin{aligned} f_{i+1,j}\gets f_{i+1,j}+f_{i,j}\\ g_{i+1,j}\gets g_{i+1,j}+g_{i,j} \end{aligned} $$
考虑 $i+1$ 这只狗交朋友,若它是 R
狗,则有转移:
$$ \begin{aligned} f_{i+1,j+1}&\gets f_{i+1,j+1}+f_{i,j}+a_{i+1}\times g_{i,j}\\ g_{i+1,j+1}&\gets g_{i+1,j+1}+g_{i,j} \end{aligned} $$
若它是 L
狗,则有转移:
$$ \begin{aligned} f_{i+1,j-1}&\gets f_{i+1,j-1}+j\times(f_{i,j}+a_{i+1}\times g_{i,j})\\ g_{i+1,j-1}&\gets g_{i+1,j-1}+j\times g_{i,j} \end{aligned} $$
则这行的交友方案数为 $g_{n,0}$,价值和为 $f_{n,0}$。
C
啥玩意,看不懂啊。
D
$f(n)=\prod f(p^c)=(\prod(p+1)^c)^{1919810}\times\prod\dfrac{(p^{114514})^2}{((p+1)^{1919810})^2}$,前半部分容易维护,考虑后半部分。
考虑在每种质因子的前两次出现处统计其贡献,对每个质因子 $z$ 维护 $l_z$ 表示其前 $z$ 的倒数第二次出现,
则问题变为对每个区间内的、$l_z$ 小于区间左端点的质因子 $p$,求 $\dfrac{p^{114514}}{(p+1)^{1919810}}$ 之积。
multiset
维护 $l_z$。动态二维数点,树套树维护之。