C
考虑两行要么互补要么相等且
0
/
1
0/1
0/1 交替
若满足
0
/
1
0/1
0/1 交替,则有
2
2
2 的系数,我们称这样的行为自由行
我们只需要统计
∑
2
c
n
t
\sum 2^{cnt}
∑2cnt 作为答案
首先可以将不同的行拆成
n
n
n 个区间
考虑两个位置
(
i
,
i
+
1
)
(i,i+1)
(i,i+1),若相等,则包涵它的区间都会变成不自由行
基于此在笛卡尔树上
D
P
\mathcal{DP}
DP
我的做法要维护最左边最右边,以及有无一个位置
(
i
,
i
+
1
)
(i,i+1)
(i,i+1) 相等
复杂度
O
(
n
×
2
7
)
\mathcal{O}(n\times 2^7)
O(n×27)
D
对于任意一个区间,不同的取值个数只有
20
20
20 个
用线段树维护,
O
(
n
log
n
log
V
)
\mathcal{O}(n\log n\log V)
O(nlognlogV)