ARC088C Papple Sort
题意 : 给定一个只有小写字母的字符串
若各个字符中,有
回文串相当于指定某些字符应两两配对,然后将它们移到对称的位置。
最小相邻交换次数是经典问题,如果我们知道每个元素的目标位置,通过计算逆序对就可以得到答案。
- 如何配对
对于一个出现偶数次的字符,记出现位置为
由于我们不会交换两个相邻相同的字符(显然不优),于是,肯定是
对于出现奇数次(
- 如何给每个对子确定目标位置
考虑任意两个对子 A,B
之间的贡献。
它们原来的位置可能形如:
A...A...B...B
我们让
A
在B
外面,目标状态为A...B...B...A
,则A,B
之间的交换(逆序对)是个。 若
B
在A
外面,交换也是个,没有区别。 A...B...B...A
此时让
A
在B
外面,则无需交换,否则会产生个交换。
综上,我们让左端点靠左的对子在外面是最优的。
然后使用树状数组求解逆序对,即可做到