51nod 1574 排列轉換

2021-08-09 03:28:11 字數 930 閱讀 9045

現在有兩個長度為n的排列p和s。要求通過交換使得p變成s。交換 pi 和 pj 的代價是|i-j|。要求使用最少的代價讓p變成s。

單組測試資料。

第一行有乙個整數n (1≤n≤200000),表示排列的長度。

第二行有n個範圍是1到n的整數,表示排列p。每個整數只出現一次。

第三行有n個範圍是1到n的整數,表示排列s。每個整數只出現一次。

輸出乙個整數,表示從排列p變到s最少要多少代價。

input

4

4 2 1 3

3 2 4 1

output

感謝51nod 1574 排列轉換(貪心+鴿巢原理) - free-loop - 和dancer16的題解。

反正看到第一題直覺就是ans肯定是》=∑abs(place[pos[i]]-i)

但無法證明這就是答案。

於是感謝可愛的nbc大姐姐的證明quq

p黨瑟瑟發抖quq

var f:array[0..200005] of longint;

i,x,n:longint;

ans:int64;

begin

readln(n);

for i:=1

to n do

begin

read(x);

f[x]:=i;

end;

readln;

for i:=1

to n do

begin

read(x);

ans:=ans+abs(f[x]-i);

end;

readln;

writeln(ans div

2);end.

51Nod 1574 排列轉換

現在有兩個長度為n的排列p和s。要求通過交換使得p變成s。交換 p i pi pi 和 p j pj pj 的代價是 i j 要求使用最少的代價讓p變成s。input單組測試資料。第一行有乙個整數n 1 n 200000 表示排列的長度。第二行有n個範圍是1到n的整數,表示排列p。每個整數只出現一次...

51 nod 1574 排列轉換 思維 貪心

1574 排列轉換 codeforces 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 現在有兩個長度為n的排列p和s。要求通過交換使得p變成s。交換 pi 和 pj 的代價是 i j 要求使用最少的代價讓p變成s。input 單組測試資料。第一行有乙個整數n ...

51nod 1574 排列轉換 貪心 鴿巢原理

題意 有兩個長度為n的排列p和s。要求通過交換使得p變成s。交換 pi 和 pj 的代價是 i j 要求使用最少的代價讓p變成s。考慮兩個數字pi和pj,假如交換他們能使得pi到目標的距離減少,pj到目標的距離減少。那麼應該交換他們,這是乙個必要的操作,也是答案的下界。如果每一次都能找到這樣的兩個數...