の数字は1
からN (<=10^5)
です。順列の部分配列を逆にすることができるとします。私はsummation(X*Y)
を見つけなければなりません。はP
のいずれかのサブアレイを反転させることができる形式の数であり、P
とy
はそのような形式の完全な逆転です。置換の部分配列が逆転した場合の置換の逆数?
例えば
if N =2 ; and given permutation = 2 1
Then summation(X*Y) =
if i reverse subarray(1,1) = permutation = 2 1 inversion =1
if i reverse subarray(2,2) = permutation = 2 1 inversions =1
if i reverse subarray(1,2) = permutation = 1 2 inversion =0
summation (x*y) = 2*1 + 1*0 = 2
私のアプローチは
Complexity= O(n(n+1)/2*nlogn)=O(n^3logn)
はどのO(nlogn)
アプローチがあり、各n*(n+1)/2
サブアレーを選択し、それを逆に、それに反転を計算し、合計を行うことですか?
https://en.wikipedia.org/wiki/Inversion_(discrete_mathematics)
上記のアルゴリズムでは、上記の2、1の入力に対して別の結果が得られます。答えは2ですが、答えは2です – qwertyUser
私は、あなたの逆転が上記の境界を超えている間、すべての部分配列を逆にすることによって、元の順列から導き出されたすべての順列の総和を逆転させることになります。私が間違っていると私を訂正してください。 – qwertyUser
@qwertyUser擬似コードを修正しました。 –