牛牛舉辦了一次程式設計比賽,參加比賽的有3*n個選手,每個選手都有乙個水平值a_i.現在要將這些選手進行組隊,一共組成n個隊伍,即每個隊伍3人.牛牛發現隊伍的水平值等於該隊伍隊員中第二高水平值。先定義乙個vector v,在開闢空間例如: 乙個隊伍三個隊員的水平值分別是3,3,3.那麼隊伍的水平值是3 乙個隊伍三個隊員的水平值分別是3,2,3.那麼隊伍的水平值是3
乙個隊伍三個隊員的水平值分別是1,5,2.那麼隊伍的水平值是2 為了讓比賽更有看點,牛牛想安排隊伍使所有隊伍的水平值總和最大。 如樣例所示:
如果牛牛把6個隊員劃分到兩個隊伍 如果方案為: team1:, team2:, 這時候水平值總和為7.
而如果方案為: team1:, team2:, 這時候水平值總和為10.
沒有比總和為10更大的方案,所以輸出10.
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,為移位後的陣列,同時...