51nod1125 交換機器的最小代價

2022-03-30 14:44:25 字數 1087 閱讀 4565

跟做過的bzoj一道置換群的題幾乎一樣,只是資料範圍大了點,那麼就用map就好了。。。

#include#include#include#include#includeusing namespace std;

#define rep(i,s,t) for(int i=s;i<=t;i++)

#define dwn(i,s,t) for(int i=s;i>=t;i--)

#define clr(x,c) memset(x,c,sizeof(x))

#define ll long long

int read()

while(isdigit(c)) x=x*10+c-'0',c=getchar();

return x*f;

}const int nmax=1e5+5;

const int maxn=1e5+5;

const int inf=0x7f7f7f7f;

mapm;

int a[nmax],to[maxn],b[nmax],mn,n;

bool vis[nmax];

void mins(ll &a,ll b)

ll solve(int x)

int main()

1125 交換機器的最小代價

基準時間限制:1 秒 空間限制:131072 kb 分值: 80 難度:5級演算法題

收藏關注有n臺機器重量各不相等,現在要求把這些機器按照重量排序,重量從左到右依次遞增。移動機器只能做交換操作,但交換機器要花費一定的費用,費用的大小就是交換機器重量的和。例如:3 2 1,交換1 3後為遞增排序,總的交換代價為4。給出n臺機器的重量,求將所有機器變為有序的最小代價。(機器的重量均為正整數)

input

第1行:1個數n,表示機器及房間的數量。(2 <= n <= 50000)

第2 - n + 1行:每行1個數,表示機器的重量wi。(1 <= wi <= 10^9)

output

輸出最小代價。
input示例

332

1

output示例

4

51nod 1125 交換機器的最小代價

這道題是以前數學專題做過類似的,就是學 置換 的時候 比如 2 3 4 1,就是乙個迴圈,因為第乙個位置是2,然後去找第二個位置,是3,又找第三個位置,是4,又找第四個位置,又回到了1。而4 3 2 1,第乙個位置是4,找第4個位置,是1,找第乙個位置,又是4,所以是個迴圈,同理也是個迴圈 那我們為...

51Nod 1125 交換機器的最小代價

題目描述 有n臺機器重量各不相等,現在要求把這些機器按照重量排序,重量從左到右依次遞增。移動機器只能做交換操作,但交換機器要花費一定的費用,費用的大小就是交換機器重量的和。例如 3 2 1,交換1 3後為遞增排序,總的交換代價為4。給出n臺機器的重量,求將所有機器變為有序的最小代價。機器的重量均為正...

51nod1125 交換機器的最小代價 貪心

1125 交換機器的最小代價 基準時間限制 1 秒 空間限制 131072 kb 分值 80 難度 5級演算法題 有n臺機器重量各不相等,現在要求把這些機器按照重量排序,重量從左到右依次遞增。移動機器只能做交換操作,但交換機器要花費一定的費用,費用的大小就是交換機器重量的和。例如 3 2 1,交換1...