传送门 状压dp好题。 首先需要回忆
O
(
n
l
o
g
n
)
O(nlog n)
O(nlogn)求
l
i
s
lis
lis的方法,我们会维护一个单调递增的
d
d
d数组。 可以设计状态
f
(
s
1
,
s
2
)
f(s1,s2)
f(s1,s2)表示选取的数的集合是
s
1
s1
s1,然后d数组中元素的出现情况是
s
2
s2
s2。 这样转移是很简单的。 但时空都无法承受。 于是我们考虑优化,不难发现
s
1
s1
s1是
s
2
s2
s2的子集。 因此我们三进制状压dp就行了。 代码