Magical Candy Store
不会将主动权让给对方
特殊讨论
1
1
1 的情况,剩余的贪心
Scalar Product Tree
我们通过记忆化,将复杂度降为点对个数
设每层的结点个数为
a
i
a_i
ai,那么点对个数为
∑
min
(
(
a
i
2
)
,
q
)
\sum \min(\binom{a_i}{2},q)
∑min((2ai),q)
分析得到复杂度为
O
(
n
q
)
\mathcal{O}(n\sqrt q)
O(nq)
Unusual Queries
考虑每个点向后面第一个比它大的连边,那么会建出一棵树
每个子树的编号是连续的一段
[
l
,
r
]
[l,r]
[l,r]
我们要做的就是求出深度减去第一次跳出去的深度的最大值
从
r
r
r 所在的子树往前跳若干段,这些段子树中每个点都可以取到
我们预处理出最大值然后倍增就可以了
那么只需要对最后一棵子树单独处理,用
S
T
\mathcal{ST}
ST 表处理最大值就可以了
Chef and the Combination Lock
f
i
f_i
fi 表示需要
≥
i
\ge i
≥i 次操作的方案数
f
i
=
∏
max
(
0
,
a
j
+
1
−
i
×
2
)
f_i=\prod \max (0,a_j+1-i\times 2)
fi=∏max(0,aj+1−i×2)
找到
t
=
min
(
a
i
+
1
)
/
2
t=\min (a_i+1)/2
t=min(ai+1)/2
求
∑
i
=
1
t
f
i
\sum_{i=1}^t f_i
∑i=1tfi
注意到
f
i
f_i
fi 是关于
i
i
i 的
N
N
N 次多项式
我们只需求出其
N
+
2
N+2
N+2 个点值就可以插值出
∑
i
=
1
t
f
i
\sum_{i=1}^tf_i
∑i=1tfi
上一个分治
N
T
T
\mathcal{NTT}
NTT 和一个多点求值就可以了
Panic! at the Disco
∑
i
=
0
N
F
a
+
i
×
d
×
M
i
=
∑
i
=
0
N
1
5
(
φ
a
+
i
d
−
ϕ
a
+
i
d
)
M
i
\sum_{i=0}^NF_{a+i\times d}\times M^i\\=\sum_{i=0}^N\frac{1}{\sqrt 5}(\varphi^{a+id}-\phi^{a+id})M^i
i=0∑NFa+i×d×Mi=i=0∑N51(φa+id−ϕa+id)Mi
令
M
:
=
φ
d
M
M:=\varphi^dM
M:=φdM
我们可以在
O
(
K
3
log
N
)
\mathcal{O}(K^3\log N)
O(K3logN) 倍增解决
考虑
M
M
M 的特征多项式
f
(
λ
)
f(\lambda)
f(λ)
我们只需要将
∑
i
=
0
N
z
i
\sum_{i=0}^Nz^i
∑i=0Nzi 对
f
(
z
)
f(z)
f(z) 取模即可
于是就可以
O
(
K
2
log
N
+
K
4
)
\mathcal{O}(K^2\log N+K^4)
O(K2logN+K4) 做
H
i
n
t
\mathcal{Hint}
Hint:
5
5
5 没有二次剩余,需要维护
x
+
5
y
x+\sqrt 5y
x+5y 的系数,慢慢写吧
Red-Black Boolean Expression
每个点有个选择的权值
c
i
≥
0
c_i\ge 0
ci≥0
m
i
n
i
m
i
z
e
:
∑
i
c
i
z
i
l
i
m
i
t
:
c
u
+
c
v
≥
1
c
u
+
c
−
u
≤
1
minimize:\sum_i c_iz_i\\limit:c_u+c_v\ge 1\\c_u+c_{-u}\le 1
minimize:i∑cizilimit:cu+cv≥1cu+c−u≤1
转对偶
m
a
x
i
m
i
z
e
:
∑
e
w
e
−
∑
u
t
u
l
i
m
i
t
:
∀
u
,
∑
(
u
,
v
)
∈
E
w
e
−
t
u
≤
c
u
maximize:\sum_e w_e-\sum_ut_u\\limit:\forall u,\sum_{(u,v)\in E}w_e-t_u\le c_u
maximize:e∑we−u∑tulimit:∀u,(u,v)∈E∑we−tu≤cu
若不考虑
c
u
+
c
−
u
≤
1
c_u+c_{-u}\le 1
cu+c−u≤1 的限制,就是个最大流问题
现在就是要对每个点分配一个
t
u
t_u
tu 使得最大流减去
∑
t
u
\sum t_u
∑tu 最大
注意到增大
t
u
t_u
tu 是不劣的,我们将其设为极大值跑最大流就可以了
Selecting Edges
将图随机映射成二分图
容易发现正确的概率为
1
2
k
\frac{1}{2^k}
2k1
我们做
T
T
T 次正确的概率为
1
−
(
2
k
−
1
2
k
)
T
1-(\frac{2^k-1}{2^k})^T
1−(2k2k−1)T
映射成二分图后跑一个费用流就可以了
复杂度
O
(
T
n
m
k
)
\mathcal{O}(Tnmk)
O(Tnmk) 或
O
(
T
m
k
log
n
)
\mathcal{O}(Tmk\log n)
O(Tmklogn)