時間限制: 1sec 記憶體限制: 128mb 提交: 75 解決: 11
題目描述
n 個小朋友站成一排。現在要把他們按身高從低到高的順序排列,但是每次只能交換位置相鄰的兩個小朋友。
每個小朋友都有乙個不高興的程度。開始的時候,所有小朋友的不高興程度都是0。
如果某個小朋友第一次被要求交換,則他的不高興程度增加1,如果第二次要求他交換,則他的不高興程度增加2(即不高興程度為3),依次類推。當要求某個小朋友第k次交換時,他的不高興程度增加k。
請問,要讓所有小朋友按從低到高排隊,他們的不高興程度之和最小是多少。
如果有兩個小朋友身高一樣,則他們誰站在誰前面是沒有關係的。
樣例說明
首先交換身高為3和2的小朋友,再交換身高為3和1的小朋友,再交換身高為2和1的小朋友,每個小朋友的不高興程度都是3,總和為9。
資料規模和約定
對於100%的資料,1< =n< =100000,0< =hi< =1000000。
輸入輸入的第一行包含乙個整數n,表示小朋友的個數。
第二行包含 n 個整數 h1 h2 … hn,分別表示每個小朋友的身高。
輸出輸出一行,包含乙個整數,表示小朋友的不高興程度和的最小值。
樣例輸入
33 2 1
樣例輸出
9
#include#define maxn 100010struct
data
a[maxn],temp[maxn];
intn;
//long long ans;
long
long ans[100
];void merge(int l1,int r1,int l2,int
r2)
else
if(a[i].num>a[j].num)//
a[i,r1]都大於a[j]
}//剩下上陣列,那麼剩下的元素都要移動下陣列的元素個數
while(i<=r1)
while(j<=r2) temp[k++]=a[j++]; //
剩下下陣列,就不需要移動
for(i=0;itemp[i];
}void mergesort(int l,intr)}
int main(void
)
if(ans[0]0]=length;
}//printf("%lld",ans);
for(int i=ans[0];i>=1;i--) printf("%d"
,ans[i]);
//printf("\n");
return0;
}大致的思路:使用歸併排序的思想求逆序對的思想,劃分成為乙個上陣列,乙個陣列。
上陣列的元素往下陣列方向移動,下陣列的元素往上陣列方向移動。
上陣列的元素往下陣列方向移動,移動的長度是下陣列中小於該元素的個數;
下陣列的元素往桑陣列方向移動,移動的長度是上陣列中大於該元素的個數。
在結構體中記錄移動的次數。
由於資料較大,可以使用高精度加法進行計算。
注意:這裡使用long long 也是可以的
#include#define maxn 100010struct
data
a[maxn],temp[maxn];
intn;
long
long
ans;
long
long ans[100
];void merge(int l1,int r1,int l2,int
r2)
else
if(a[i].num>a[j].num)//
a[i,r1]都大於a[j]
}//剩下上陣列,那麼剩下的元素都要移動下陣列的元素個數
while(i<=r1)
while(j<=r2) temp[k++]=a[j++]; //
剩下下陣列,就不需要移動
for(i=0;itemp[i];
}void mergesort(int l,intr)}
int main(void
) printf(
"%lld
",ans);
return0;
}
藍橋杯 歷屆試題 小朋友排隊
歷屆試題 小朋友排隊 時間限制 1.0s 記憶體限制 256.0mb 問題描述 n 個小朋友站成一排。現在要把他們按身高從低到高的順序排列,但是每次只能交換位置相鄰的兩個小朋友。每個小朋友都有乙個不高興的程度。開始的時候,所有小朋友的不高興程度都是0。如果某個小朋友第一次被要求交換,則他的不高興程度...
藍橋杯 歷屆試題 小朋友排隊 C
題目閱覽 n 個小朋友站成一排。現在要把他們按身高從低到高的順序排列,但是每次只能交換位置相鄰的兩個小朋友。每個小朋友都有乙個不高興的程度。開始的時候,所有小朋友的不高興程度都是0。如果某個小朋友第一次被要求交換,則他的不高興程度增加1,如果第二次要求他交換,則他的不高興程度增加2 即不高興程度為3...
藍橋 歷屆試題 小朋友排隊
問題描述 傳送門 n 個小朋友站成一排。現在要把他們按身高從低到高的順序排列,但是每次只能交換位置相鄰的兩個小朋友。每個小朋友都有乙個不高興的程度。開始的時候,所有小朋友的不高興程度都是0。如果某個小朋友第一次被要求交換,則他的不高興程度增加1,如果第二次要求他交換,則他的不高興程度增加2 即不高興...