是否有序对解法的影响(?)
有点不想写题,乱写一通
大多数时候有序和无序的转化只是一些组合数系数,但是两者对于问题的求解形式是并不相同的。
具体来说,有序只需要在已有的情况下在符合限制的情况直接加入就好了,而无序通常需要保证包含一个选中的代表元才行,并且无序的情况下可以在一个固定的顺序下加入元素。
或许无序看着其实比较复杂,但在某些时候其实有着较有序更好的性质。
例如多项式复合集合幂级数,子集卷积本身就是有序的,如果代入定义使用子集卷积就只能做到 \(\mathcal{O}(2^n n^3)\)。
但是如果转成无序的,那么这就类似于 exp,考虑把一个集合的代表元记为最大值,每次在遇到最大值时再加入该集合,加上对状态范围的优化,便可以做到 \(\mathcal{O}(\sum\limits_{i = 1}^n 2^i i^2(n - i)) = \mathcal{O}(2^n n^2)\) 的复杂度。
这里的优化点体现在“范围”的减小,在有序的时候只能做 \(n\) 位的卷积,而无序做法在枚举到 \(\max = i\) 时只需要做 \(i\) 位的卷积。
不过这种优化应该还是主要在指数级的做法有效(?)。
还有就是,有时候在有序的时候会不可避免的因为重复而做的更复杂,而无序允许把这些元素打包一起做操作再转回有序。
例如 ABC276G(WC 上 cxy 讲的),如果考虑一个一个元素加入就会很复杂,复杂度可能会多个 \(n\) 啥的,但是如果考虑一次性加入一个值的所有元素就会简单多了。
大多时候有序无序转化都需要多添加一维表示选择的数量(当然如果数量固定不需要),而且有时多出的组合数系数还不利于优化系数,这个反例我做出来过。

浙公网安备 33010602011771号