藍橋杯 歷屆試題 小朋友排隊 C

2021-10-07 02:10:44 字數 2230 閱讀 8537

題目閱覽

n 個小朋友站成一排。現在要把他們按身高從低到高的順序排列,但是每次只能交換位置相鄰的兩個小朋友。

每個小朋友都有乙個不高興的程度。開始的時候,所有小朋友的不高興程度都是0。

如果某個小朋友第一次被要求交換,則他的不高興程度增加1,如果第二次要求他交換,則他的不高興程度增加2(即不高興程度為3),依次類推。當要求某個小朋友第k次交換時,他的不高興程度增加k。

請問,要讓所有小朋友按從低到高排隊,他們的不高興程度之和最小是多少。

如果有兩個小朋友身高一樣,則他們誰站在誰前面是沒有關係的。

輸入格式

輸入的第一行包含乙個整數n,表示小朋友的個數。

第二行包含 n 個整數 h1 h2 … hn,分別表示每個小朋友的身高。

輸出格式

輸出一行,包含乙個整數,表示小朋友的不高興程度和的最小值。

樣例輸入1

33 2 1

樣例輸出1

9樣例說明

首先交換身高為3和2的小朋友,再交換身高為3和1的小朋友,再交換身高為2和1的小朋友,每個小朋友的不高興程度都是3,總和為9。

思路簡介

先介紹一下第一次提交的**,當然因為演算法複雜超時了最後三個,這裡的思路是將所有小朋友的身高和所在位置儲存在陣列中,並利用另外兩個陣列依次根據身高大小排序,最後再次根據小朋友所在位置篩選出滿足比自身位置靠前,並且大於自身身高的人數和比自身位置靠後,但小於自己身高的人數,也就是交換的次序,再根據交換次序將小朋友不高興程度遞增,求和得出最終結果。

實現**

#include #include #include using namespace std;

struct childinfo;

bool lowcompare(childinfo temp1,childinfo temp2)

bool upcompare(childinfo temp1,childinfo temp2)

}else

} //比自身位置靠後,並且小於自身身高的人數

for(int n=0;nchildlists2[n].valuenum)

;int cnt[

100005];

void

merge_sort1

(vector

&tempchild,

int left,

int right)

} t=0;

for(

int k = left;k

) tempchild[k]

= temp[t++];

delete

temp;

}void

merge_sort2

(vector

&tempchild,

int left,

int right)

} t=0;

for(

int i=left;i

) tempchild[i]

= temp[t++];

delete

temp;

}int

main()

vector

childlists1

(childlists.

begin()

,childlists.

end())

;merge_sort1

(childlists,

0,childlists.

size()

);merge_sort2

(childlists1,

0,childlists1.

size()

);long

long sum =0;

for(

int i=

0;isize()

;i++

) sum +

=1ll*(

1+cnt[i]

)*cnt[i]/2

; cout << sum;

return0;

}

最終結果

藍橋杯 歷屆試題 小朋友排隊

歷屆試題 小朋友排隊 時間限制 1.0s 記憶體限制 256.0mb 問題描述 n 個小朋友站成一排。現在要把他們按身高從低到高的順序排列,但是每次只能交換位置相鄰的兩個小朋友。每個小朋友都有乙個不高興的程度。開始的時候,所有小朋友的不高興程度都是0。如果某個小朋友第一次被要求交換,則他的不高興程度...

藍橋杯 歷屆試題 小朋友排隊

時間限制 1sec 記憶體限制 128mb 提交 75 解決 11 題目描述 n 個小朋友站成一排。現在要把他們按身高從低到高的順序排列,但是每次只能交換位置相鄰的兩個小朋友。每個小朋友都有乙個不高興的程度。開始的時候,所有小朋友的不高興程度都是0。如果某個小朋友第一次被要求交換,則他的不高興程度增...

藍橋 歷屆試題 小朋友排隊

問題描述 傳送門 n 個小朋友站成一排。現在要把他們按身高從低到高的順序排列,但是每次只能交換位置相鄰的兩個小朋友。每個小朋友都有乙個不高興的程度。開始的時候,所有小朋友的不高興程度都是0。如果某個小朋友第一次被要求交換,則他的不高興程度增加1,如果第二次要求他交換,則他的不高興程度增加2 即不高興...