题解:P10360 [PA 2024] Desant 3
FstAutoMaton · · 题解
[PA 2024] Desant 3
好怪的数数,不过这种套路好像挺常见(?
和 P9393 的想法有点像,可以看一下。
首先可以发现这个题的数据范围及其古怪,不是超级 dp 就应该是一些胡乱的复杂度的做法。但这题完全没有可以 dp 的拓扑序,所以考虑状压,然后用一些奇怪手法把复杂度降下来。
枚举每个位置是
考虑对这个状态进行转移,设当前操作为
-
直接模拟操作向后转移即可,这样是从 $1$ 个状态转移到 $1$ 个状态,不影响答案。 -
考虑 $a=-1,b=0$ 的情况。那么可以发现如果确定后的状态中这两个数全为 $0$ 那么这一次交换还是不交换不影响答案数量与状态正确性,而一个为 $1$ 一个为 $0$ 时需要交换,所以直接视作交换即可,将其变为 $a'=0,b'=-1$。 $a=1,b=-1$ 同理。 这时状态数不会增加。 -
a=-1,b=1$ 或 $a=0,b=-1 此时无论为
-1 的数实际上指代的是什么都无需交换,这时状态不变,状态数不增加。 -
a=-1,b=-1 这时分类讨论其真实对应的值的四种情况即可,这时状态数会变为原来的
4 倍。
考虑这样转移的复杂度,前
考虑优化。仔细读题发现有一个非常重要的东西我们没有用上,即输出种类数对