遊覽世博 釣魚問題 詳細題解

2021-10-05 23:18:53 字數 3078 閱讀 8616

這兩個問題很像,都是依次列舉出以每乙個地點為終點時的最大值,在從中選取乙個最大值

遊覽世博

題目描述

華華準備去上海世博會遊覽,但展館太多,而時間有限,因此他只能選擇遊覽一部分展館。在世博園區,假設華華想去的所有展館都在一條直道上,展館只有大、小兩類,參觀小展館需30分鐘,參觀大展館要60分鐘。已知:從起點到各展館的時間及展館的大小。請問:華華最多能夠參觀多少個展館。

輸入

華華準備去上海世博會遊覽,但展館太多,而時間有限,因此他只能選擇遊覽一部分展館。在世博園區,假設華華想去的所有展館都在一條直道上,展館只有大、小兩類,參觀小展館需30分鐘,參觀大展館要60分鐘。已知:從起點到各展館的時間及展館的大小。請問:華華最多能夠參觀多少個展館。

輸入

n s(展館個數n<=100,遊覽時間s為整數分鐘)

n個整數(表示從起點到各展館所需要的時間,以空格相隔)

n個整數(表示各展館的大小,1為小展館,2為大展館,以空格相隔)

輸出

華華能夠參觀的最多展館數

樣例輸入

5 200

30 120 100 75 50

2 1 2 1 1

樣例輸出

3

(即:參觀1、4、5號展館,總共用時195分鐘 題解

這是乙個貪心題,我們需要先將展館位置從大到小排序,依次列舉以各個展館為終點時的方案,如果以這個展館為終點,那麼我們途經的所有展館都可以選擇參觀或者不參觀,然後應該先選擇從小展館參觀,再選擇大展館參觀,使得總參觀展館數最大 **

#include

#include

using

namespace std;

//記錄世博會的所需時間和大小

struct v

visit[

15000];

bool

cmp(v a, v b)

intmain()

}//再參觀大展館

for(

int j=

1;j<=i;j++)}

maxx=

max(maxx,temp);}

cout

}

釣魚問題

題目描述

在一條水平路邊,有 nn 個釣魚湖,從左到右編號為 1,2,…,n1,2,…,n。佳佳有 hh 個小時的空餘時間,他希望利用這個時間釣到更多的魚。他從 11 出發,向右走,有選擇的在一些湖邊停留一定的時間(是 55 分鐘的倍數)釣魚。最後在某乙個湖邊結束釣魚。佳佳從第 ii 個湖到第 i+1i+1 個湖需要走 5\times t_i5×ti 分鐘路,還測出在第 ii 個湖停留,第乙個 55 分鐘可以釣到 f_ifi 條魚,以後每再釣 55 分鐘,可以釣到的魚量減少 d_idi,若減少後的魚量小於 00,則減少後的魚量為 00 。為了簡化問題,佳佳假定沒有其他人釣魚,也沒有其他因素影響他釣到期望數量的魚。請程式設計求出佳佳最多能釣魚的數量。

輸入

第一行乙個整數 n,表示湖的個數

第二行乙個整數 h,表示佳佳的空閒時間

第三行有 n 個整數,依次表示每個湖第乙個 55 分鐘能釣到魚的數量

第四行有 n 個整數,依次表示以後的每5分鐘釣魚數量比前乙個 55 分鐘釣魚數量減少的數量

第五行有 n-1 個整數,ti 表示由第 i 個湖到第 i+1 個湖需要花 5×ti 分鐘的路程

輸出

輸出只有一行,表示佳佳最多能釣魚的數量

樣例輸入

3

14 5 6

1 2 1

1 2

樣例輸出

樣例解釋

在第 11 個湖釣 15 分鐘,共釣得 4+3+2=94+3+2=9 條魚;

在第 22 個湖釣 10 分鐘,共釣得 5+3=85+3=8條魚;

在第 33 個湖釣 20 分鐘,共釣得 6+5+4+3=186+5+4+3=18 條魚;

從第 11 個湖到第 22 個湖,從第 22 個湖到第 33 個湖,共用時間 1515 分鐘,共得 3535 條魚,並且這是最多的數量。 題解

這道題是乙個貪心問題,依次列舉只走到每乙個池塘的情況下,所能掉到的最多魚,進行比較,取最大值就行

#include

#include

using

namespace std;

struct l

;struct lt

;bool

cmp(lt l1,lt l2)

intmain()

//依次表示以後的每5分鐘釣魚數量比前乙個5分鐘釣魚數量減少的數量

for(i=

1;i<=n;i++

)for

(i=2

;i1;i++

)//在路上花費的時間

t[1]

=0; maxx=0;

//sort(laketemp+1,laketemp+n,cmp);//測驗

//列舉以每乙個湖為結束點的最大釣魚量

for(i=

1;i<=n;i++

)//先把剩餘魚多的排在前面

sort

(laketemp+

1,laketemp+i+

1,cmp)

; fish=laketemp[1]

.num;

while

(count>

0&&fish>0)

//次數和魚數都大於0

maxx=

max(maxx,sum);}

//取地最大值

cout<}return0;

}

世博遊覽技巧

世博遊覽技巧 方案一 一日進園步驟1 4 50 5 30到達5 號門3號口07 00 開園後最大速度向後面的安檢口跑 看到少於 30人就可以拿到中國的預約 也就是安檢的前3排 09 00 安檢後就會有人發中國的預約券 可以不按預約的時間去 但是必須當天 20 00 以前去排隊 09 01 拿到中國國...

郵票問題詳細題解 簡單dp

已知乙個 n 枚郵票的面值集合 如,和乙個上限 k 表示信封上能夠貼 k 張郵票。計算從 1 到 m 的最大連續可貼出的郵資。例如,假設有 1 分和 3 分的郵票 你最多可以貼 5 張郵票。很容易貼出 1 到 5 分的郵資 用 1 分郵票貼就行了 接下來的郵資也不難 6 3 3 7 3 3 1 8 ...

P1106 刪數問題 詳細題解

戳一戳 題解 對於這題我們使用貪心思想 貪心策略是比較前乙個數是不是比後面一位數要大 因為要得到最小的數,就要盡量讓數的前面位數小 如果要大的話,就把當前的數給刪去 得到乙個新的string 然後再重新進行一次兩兩大小的判斷 每重新判斷一次 就會刪去乙個數 也就是總體要判斷k次 當然也會出現沒有前面...