題目
題意:
給乙個陣列,問將其從小到大排序需要交換幾次數字;分析:
用個map容器,來存每個值對應的位置,直接遍歷陣列,找到排序之後的陣列與原陣列不同的位置,然後用map來交換;上**(詳解):
#include
#include
#include
#include
#include
#define ll long long
using
namespace std;
map<
int,
int> mp;
int n, ans =0;
int num[
100010
], pos[
100010];
intmain()
sort
(pos+
1,pos+n+1)
;for
(int i=
1; i<=n; i++)}
cout << ans << endl;
return0;
}
洛谷 P1327 數列排序
給定乙個數列,這個數列滿足ai aj i j 現在要求你把這個數列從小到大排序,每次允許你交換其中任意一對數,請問最少需要幾次交換?輸入格式 第一行,正整數n n 100,000 以下若干行,一共n個數,用空格分隔開,表示數列,任意 2 31 輸出格式 只有一行,包含乙個數,表示最少的交換次數。輸入...
數論 洛谷 P1062 數列
給定乙個正整數k 3 k 15 把所有k的方冪及所有有限個互不相等的k的方冪之和構成乙個遞增的序列,例如,當k 3時,這個序列是 1,3,4,9,10,12,13,該序列實際上就是 3 0,3 1,3 0 3 1,3 2,3 0 3 2,3 1 3 2,3 0 3 1 3 2,請你求出這個序列的第n...
洛谷p1062 數列
給定乙個正整數k 3 k 15 把所有k的方冪及所有有限個互不相等的k的方冪之和構成乙個遞增的序列,例如,當k 3時,這個序列是 1,3,4,9,10,12,13,該序列實際上就是 3 0,3 1,3 0 3 1,3 2,3 0 3 2,3 1 3 2,3 0 3 1 3 2,請你求出這個序列的第n...