AtCoder Regular Contest 108 (A-F) 题解
A
枚举P的因子,时间复杂度 O ( p ) O(\sqrt p) O(p)
B
从前往后扫,维护一个栈,遇到一个完整的fox,就弹出。时间复杂度 O ( N ) O(N) O(N)
C
搞一个生成树,根据父亲的颜色决定当前点的颜色。
D
分类讨论好题,👍
讨论每一种情况,看看字符串有多少形态?
时间复杂度: O ( n ) O(n) O(n)
E
我们可以发现若l和r选择的话,则l,r内部的期望点数实际上与区间[l,r]外是无关的。
所以用dp[l] [r]表示 l,r选择 内部的期望点数。
最终大概长成这样:
d
p
l
,
r
=
∑
a
r
>
a
i
>
a
l
(
d
p
l
,
i
+
d
p
i
,
r
)
∗
K
dp_{l,r}=\sum_{a_r>a_i>a_l}(dp_{l,i}+dp_{i,r})*K
dpl,r=ar>ai>al∑(dpl,i+dpi,r)∗K
咋优化这个呢?
实际上由于 a l < a r a_l<a_r al<ar,所以对于 f l , i f_{l,i} fl,i我们实际上只需要满足限制: a i < a r a_i<a_r ai<ar,同理 f i , r f_{i,r} fi,r只需要满足限制 a l < a i a_l<a_i al<ai。
所以我们只需要对于每一个 d p l , ∗ dp_{l,*} dpl,∗和 d p ∗ , r dp_{*,r} dp∗,r记录一个BIT就可以了。
F
一端在树的直径上,剩下的数学乱搞就可以了。时间复杂度 O ( N ) O(N) O(N)。