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

2021-08-18 07:15:49 字數 940 閱讀 9971

這道題是以前數學專題做過類似的,就是學 置換 的時候

比如 2 3 4 1,就是乙個迴圈,因為第乙個位置是2,然後去找第二個位置,是3,又找第三個位置,是4,又找第四個位置,又回到了1。

而4 3 2 1,第乙個位置是4,找第4個位置,是1,找第乙個位置,又是4,所以是個迴圈,同理也是個迴圈

那我們為什麼要找迴圈喃?

因為如果是乙個有n個數的迴圈的話,那肯定要換n-1次才能換好,並且每次用最小的去換,最小的會用n-1次,其他的個用一次,這樣花費才最小

而最小的這個數,可能是迴圈內部自己的人,也闊能是另外乙個迴圈的,所以比較一哈,用哪個最小就行了~φ(>ω<*)

#include"iostream"

#include"algorithm"

using

namespace

std;

const

int maxn=5e4+5;

int rank[maxn];

int sa[maxn];

long

long a[maxn];

struct aaa

;aaa b[maxn];

bool cmp(aaa a,aaa b)

sort(b+1,b+1+n,cmp);

for(int i=1;i<=n;i++)sa[i]=b[i].id;

for(int i=1;i<=n;i++)rank[sa[i]]=i;

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

long

long res1=sum+(cnt-2)*min;

long

long res2=sum+(cnt-1)*min-min+2*(min+min);

res+=min(res1,res2);

}cout

<}

}

51nod1125 交換機器的最小代價

跟做過的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,...

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

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

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

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