我們計畫搞一次獨木舟旅遊活動。獨木舟可以在港口租到,並且它們之間是沒有區別的。一條獨木舟上最多只能乘坐兩個人,且乘客的總重量不能超過獨木舟的最大承載量。我們想要盡可能的減少我們在這次活動中的花銷,所以要找出可以安置所有旅客的最少的獨木舟的條數。
任務:請寫乙個程式:讀入獨木舟的最大承載量,旅客的數目和每位旅客的重量;
根據給出的規則,計算要安置所有旅客所必須最少的獨木舟的條數.
第一行包括乙個整數w,80 w 200,為一條獨木舟的最大承載量。
檔案的第二行為乙個整數n,1 n 30000,表示旅客的數目。
以下的n行中每行包含乙個[5..w]中的整數,表示所對應旅客的重量。
輸出乙個整數——所需要的最少獨木舟的數目。
1009902020
3050
6070
8090
6sol:貪心入門題,按旅客重量從小到大排成一排,然後一前一後搭配乘船。如排序後旅客重量為a,b,c,d,e,f,我們用乙個l,乙個r指標指向一前一後旅客。如果l與r所指向的旅客重量和大於limit,只能載乙個旅客,r--,ans++,如果l與r所指向的旅客重量和小於limit,則兩個旅客同時乘船,r--,l++,ans++。
即該題正向考慮,l如果能帶走r,則帶走之,為後面的船減輕負擔,否則r只能一人坐一條船,因為l已經是最小的了。如果我們反向考慮,能否找到更優的情況。
如四人排序後依次為a,b,c,d,若d可以帶走a,我們試試看d能否帶走更大的b,其實沒必要。因為b+db+c
1 #include2 #include3using
namespace
std;
4int a[30010];5
intmain()621
else
2226
}27 printf("
%d\n
",ans);
28return0;
29 }
獨木舟上的旅行
獨木舟上的旅行 時間限制 3000 ms 記憶體限制 65535kb 難度 2 描述 進行一次獨木舟的旅行活動,獨木舟可以在港口租到,並且之間沒有區別。一條獨木舟最多只能乘坐兩個人,且乘客的總重量不能超過獨木舟的最大承載量。我們要儘量減少這次活動中的花銷,所以要找出可以安置所有旅客的最少的獨木舟條數...
獨木舟上的旅行
難度 2 描述進行一次獨木舟的旅行活動,獨木舟可以在港口租到,並且之間沒有區別。一條獨木舟最多只能乘坐兩個人,且乘客的總重量不能超過獨木舟的最大承載量。我們要儘量減少這次活動中的花銷,所以要找出可以安置所有旅客的最少的獨木舟條數。現在請寫乙個程式,讀入獨木舟的最大承載量 旅客數目和每位旅客的重量。根...
獨木舟上的旅行
描述 進行一次獨木舟的旅行活動,獨木舟可以在港口租到,並且之間沒有區別。一條獨木舟最多只能乘坐兩個人,且乘客的總重量不能超過獨木舟的最大承載量。我們要儘量減少這次活動中的花銷,所以要找出可以安置所有旅客的最少的獨木舟條數。現在請寫乙個程式,讀入獨木舟的最大承載量 旅客數目和每位旅客的重量。根據給出的...