uva10073 潛水比賽

2021-07-15 09:55:34 字數 1228 閱讀 7046

【問題描述】  

在馬其頓王國的ohide湖裡舉行了一場潛水比賽.其中乙個專案是從高山上跳下水,再潛水到達終點.這是乙個團體專案,一支隊伍由n個人組成.在潛水時必須使用氧氣瓶,但是每支隊伍只有乙個氧氣瓶.最多兩個人同時使用乙個氧氣瓶,但此時兩人必須同步游泳,因此到達終點的時間等於較慢的乙個單獨遊到終點所需要的時間.好在大家都很友好,因此任何兩個人都願意一起游泳.安排一種潛水策略,使得最後一名選手盡早到達終點。

【輸入格式】

第1行:乙個整數n,表示隊伍的人數。

以下n行,每行乙個整數,表示第i個人遊到終點的時間ti。

【輸出格式】

隊伍最早到達終點的時間。

【樣例輸入1】

3134

【樣例輸入2】

6125

689 【樣例輸出1】

8【樣例輸出2】

27【資料範圍】

n<=1000, 0

100000

很清楚地是:

如果只有1人,則ans=a[1];

如果只有2人,則ans=max(a[1],a[2]);

如果只有3人,則ans=a[1]+a[2]+a[3];

不難想到有兩種方法

1.用速度最快的人來回乙個乙個地運人

2.用最快的兩個人來回運完最慢的兩個(1、2過河;1返回;最慢兩個過河;2返回;1、2過河)

先按速度排序,每次從第

三、四個人開始運,用兩種方法中時間短的一種加到ans中(注意中途需要加上乙個已過河的a[1]或a[2]返回用的時間,因為下一次需要他們在起點)。直到只有4個人或3個人,此時就很好計算了。

#include#include#define maxn 1005

using namespace std;

int n,ans=0,a[maxn];;

int read()

return ok==1?-x:x;

}void in()

void task()

if(n==2)

if(n==3)

if(n==4)

ans+=min(a[t]+a[1]+a[t+1]+a[1],a[2]+a[1]+a[t+1]+a[2]);

t-=2

; n-=2

; }

printf("%d",ans);

}int main()

1007完美立方

題目描述 a3 b3 c3 d3為完美立方等式。例如123 63 83 103 編寫乙個程式,對任給的正整數n n 100 尋找所有的四元組 a,b,c,d 使得a3 b3 c3 d3,其中1 n。輸入正整數n n 100 輸出 每行輸出乙個完美立方,按照a的值,從小到大依次輸出。當兩個完美立方等式...

1007 素數猜想

讓我們定義d n 為 d n p n 1 p n 其中p i 是第i個素數。顯然有d 1 1,且對於n 1有d n 是偶數。素數對猜想 認為 存在無窮多對相鄰且差為2的素數 現給定任意正整數n 10 5 請計算不超過n的滿足猜想的素數對的個數。輸入在一行給出正整數n。在一行中輸出不超過n的滿足猜想的...

1007素數對猜想

讓我們定義 dn 為 dn pn 1 pn,其中 pi 是第i個素數。顯然有 d1 1 且對於n 1有 dn 是偶數。素數對猜想 認為 存在無窮多對相鄰且差為2的素數 現給定任意正整數n 105 請計算不超過n的滿足猜想的素數對的個數。輸入格式 每個測試輸入包含1個測試用例,給出正整數n。輸出格式 ...