有 $2N$个球排成一列,其中有$N$个黑球与 $N$ 个白球。把 $1$ 到 $N$ 这 $N$个数字分别写到 $N$ 个黑球上;白球亦然。左起第 $i$ 个球上的写的数字是 $a_i$,颜色是 $c_i$。
$B$ 是黑球,为 $W$ 是白球。
定义一次操作为交换两个相邻的球。你需要求出最少的操作使得序列中
考虑一个数的交换次数就是他的逆序对,但是这里并没有确定比他小的数。无法直接计算可得
那么显然可以设$dp[i][j]$表示把前$i$个白球放好,前$j$个黑球,那么加入我放$i$这个白球,那么$i-1$个白球以及$j$个黑球就是比他小的,这样就可以计算出逆序对了。同理黑球也是。
- $i-1$个白球以及$j$个黑球就是比他小的可以预处理就解决了。
代码
1 |
|