1574 排列轉換

2021-09-10 21:19:56 字數 820 閱讀 5242

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

收起

單組測試資料。

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

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

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

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

44 2 1 3

3 2 4 1

樣例輸出1

3

我剛開始模擬資料模擬錯了,所以提醒一下,他的代價是i-j的絕對值,也就是如果兩個位置相同的交換那麼不花費任何能量,而我也沒有想到什麼好的方法,只能模擬,我用a陣列儲存最開始的位置,然後b陣列儲存應該到的位置,然後每個位置都換一下,看一下需要多少代價。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

int a[200100];

int b[200100];

int main()

for(int i=1;i<=n;i++)

for(int i=1;i<=n;i++)

printf("%lld\n",sum/2);

return 0;

}

51nod 1574 排列轉換

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

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 ...