【問題描述】
在馬其頓王國的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。輸出格式 ...