传送门:CF444
A. DZY Loves Physics
可以证明
x
+
y
+
z
a
+
b
\dfrac{x+y+z}{a+b}
a+bx+y+z一定没有
x
+
y
a
\dfrac{x+y}{a}
ax+y或
y
+
z
b
\dfrac{y+z}{b}
by+z优,所以答案必然是两个点和一条边。
枚举所有边即可。
B.DZY Loves FFT
任选
s
(
1
≤
s
≤
n
)
s(1\leq s\leq n)
s(1≤s≤n)(标算中
s
=
30
s=30
s=30),每次
O
(
s
)
O(s)
O(s)检查
C
i
C_i
Ci能否取到
n
−
(
n
−
s
+
1
)
n-(n-s+1)
n−(n−s+1)的值,如果都不能就暴力算
C
i
C_i
Ci。
复杂度
O
(
能
过
)
O(能过)
O(能过)?
C.DZY Loves Colors
线段树维护:更新的时候遇到相同颜色的被包含的区间直接更新,否则下传标记更新孩子然后合并
复杂度
O
(
能
过
)
O(能过)
O(能过)?
D.DZY Loves Strings
∣
S
∣
≤
4
|S|\leq 4
∣S∣≤4的串不超过
2
7
4
27^4
274种,哈希表存一下。
遍历整个串
v
e
c
t
o
r
vector
vector存每个小串的出现位置。
若两个询问串出现次数都 ≤ n \leq \sqrt n ≤n,线性扫一遍是单调的。 m m m次询问总复杂度 m n m\sqrt n mn。
若都 > n >\sqrt n >n,用 m a p map map存 f [ i ] [ j ] f[i][j] f[i][j]表示第 i , j i,j i,j个串的答案,总复杂度可以证明也是 m n m\sqrt n mn的。
E. DZY Loves Planting
二分+网络流就不说了。
并查集:
设 s u m = ∑ i = 1 n x i sum=\sum\limits_{i=1}^n x_i sum=i=1∑nxi
将边按边权升序排序,逐个枚举删去(表示仅用边权大于当前边的边):
合并当前边相连的两个连通块,设合并后连通块中点的
x
i
x_i
xi之和为
t
t
t且点的个数为
c
n
t
cnt
cnt。
要将这些点全部连向连通块外的点,所以需满足:
s
u
m
−
t
≥
c
n
t
sum-t\geq cnt
sum−t≥cnt。