讲一下大致思路。
1 Unite Cows of Farmer John
简单的权值线段树练手题,考虑枚举r,每个点l维护以[l,r]为区间,中间还能够选择的个数。那么需要三种操作:
1.将某个位置删除
2.区间加
3.区间求和
用权值线段树简单维护即可,复杂度
O
(
n
l
o
g
n
)
O(nlogn)
O(nlogn)。
2 Routing Schemes
k=2时,令dp[i][j]表示一个点走到i,第二个点走到j,其余路径都合法的方案数。我们枚举两个路径走到反向边的起点。当然,原图不具有很好的dp性质,我们要对图进行适当的改造。
k=1同理,k=0显然。
复杂度
O
(
T
n
3
)
O(Tn^3)
O(Tn3)
3 Balance Subsets
设
d
p
[
i
]
[
l
]
[
r
]
[
p
]
[
q
]
dp[i][l][r][p][q]
dp[i][l][r][p][q],表示做到了第i行,这次拼接的区间是[l,r]。
p=0表示左边界之前是膨胀的,p=1表示左边界收缩过。
q同理。
O
(
n
5
)
O(n^5)
O(n5)的转移是显然的。
我们能够发现每次转移求的是一个矩阵内的权值和,使用二维前缀和优化后能达到
O
(
n
3
)
O(n^3)
O(n3)。