CF79D Password
你有 \(n\) 个灯泡,一开始都未点亮。
同时你有 \(l\) 个长度,分别为 \(a_1 \sim a_l\)。
每次你可以选择一段连续的子序列,且长度为某个 \(a_i\),并将这些灯泡的明灭状态取反。
求最少的操作次数,使得最后有且仅有 \(k\) 个位置是亮的,这些位置已经给定,为 \(x_1 \sim x_k\)。
Hint
- 考虑逆向思维
- 考虑差分
- 考虑状压
- 考虑图论
题解:
- 逆向思维:把一个序列化为 \(0\)。
- 差分数列:把区间求改化为 \(O(1)\)
现在题目是,桌子上有 \(k\) 个石子,每次可以把位于 \(x\) 的石子移到 \(x+l_i\),如果 \(x+l_i\) 有石头,那么两个石头抵消。问操作最少次数。