- 先二分答案,每次尽量选一个最大的传上去,我们排序后二分这个最大值,去掉它后双指针扫一遍,偶数的情况可以添加一个 0 减少讨论
C o d e Code Code
- 左端点递增加入,维护右端点为
j
j
j 的
l
∈
[
1
,
k
]
l\in[1,k]
l∈[1,k] 次幂,
[
0
,
l
i
)
[0,l_i)
[0,li) 的转移需要二项式展开转移到
r
i
r_i
ri,
[
l
i
,
r
i
]
[l_i,r_i]
[li,ri] 的原封不动加到
r
i
r_i
ri,
>
r
i
>r_i
>ri 的有一个 2 的贡献,这些操作均可以用线段树来实现
复杂度 O ( N K 2 + N K l o g ( N ) ) O(NK^2+NKlog(N)) O(NK2+NKlog(N)), C o d e Code Code
- 题意: N ( ≤ 3 e 4 ) ∗ K ( ≤ 6 ) N(\le 3e4)*K(\le 6) N(≤3e4)∗K(≤6) 的网格图的最小生成树个数
- 考虑直接状压最后一列的情况,直接压每一个点的编号,合法状态数
S
S
S 大概只有 200 个
暴力转移是 2 k + k − 1 2^{k+k-1} 2k+k−1 的,但我们可以把横向的 k k k 条和纵向的 k k k 条分开转移
预处理出转移到哪一个,复杂度上界是 O ( N S 2 k ) O(NS2^k) O(NS2k) 但转移显然不满
预处理的时候用最小表示为点标号,并查集配合完成
C o d e Code Code