牛客 程式設計題 組隊競賽c

2021-10-06 18:14:26 字數 942 閱讀 3620

牛牛舉辦了一次程式設計比賽,參加比賽的有3*n個選手,每個選手都有乙個水平值a_i.現在要將這些選手進行組隊,一共組成n個隊伍,即每個隊伍3人.牛牛發現隊伍的水平值等於該隊伍隊員中第二高水平值。

例如: 乙個隊伍三個隊員的水平值分別是3,3,3.那麼隊伍的水平值是3 乙個隊伍三個隊員的水平值分別是3,2,3.那麼隊伍的水平值是3

乙個隊伍三個隊員的水平值分別是1,5,2.那麼隊伍的水平值是2 為了讓比賽更有看點,牛牛想安排隊伍使所有隊伍的水平值總和最大。 如樣例所示:

如果牛牛把6個隊員劃分到兩個隊伍 如果方案為: team1:, team2:, 這時候水平值總和為7.

而如果方案為: team1:, team2:, 這時候水平值總和為10.

沒有比總和為10更大的方案,所以輸出10.

先定義乙個vector v,在開闢空間

c++往裡面寫入資料

將資料進行排序

count來計數隊個數,每次加一下,count–

①因為是第二大的資料,所以先將最大的資料pop_back()

②然後把第二大的資料加到sum上

最後列印sum

#include

#include

#include

using

namespace std;

intmain()

sort

(v.begin()

, v.

end())

;// sort前面不用加v.

int count = n;

for(

int i = v.

size()

-1; i >

0&& count >0;

--i)

cout<< sum;

return0;

}

牛客 組隊競賽

題目解析 此題題意,這是乙個求最優解的問題,三人一對,由首行n輸入的值來確定隊伍數目,我們為保證所有隊伍的水平值總和為最大值,則需讓隊伍中第二大的值盡量大。所以將最大值放到最右邊,最小是放左邊.解題思路 1.本題的主要思路是貪心演算法,就是每次選值時都選當前能看到的區域性最優解,所以這裡的貪心就是保...

牛客 程式設計題 洗牌C

鏈結 洗牌在生活中十分常見,現在需要寫乙個程式模擬洗牌的過程。現在需要洗2n張牌,從上到下依次是第1張,第2張,第3張一直到第2n張。首先,我們把這2n張牌分成兩堆,左手拿著第1張到第n張 上半堆 右手拿著第n 1張到第2n張 下半堆 接著就開始洗牌的過程,先放下右手的最後一張牌,再放下左手的最後一...

牛客 程式設計題 元素查詢C

有乙個排過序的陣列,包含n個整數,但是這個陣列向左進行了一定長度的移位,例如,原陣列為 1,2,3,4,5,6 向左移位5個位置即變成了 6,1,2,3,4,5 現在對於移位後的陣列,需要查詢某個元素的位置。請設計乙個複雜度為log級別的演算法完成這個任務。給定乙個int陣列a,為移位後的陣列,同時...