10009 一本通 1 1 練習 5 釣魚

2021-09-02 07:36:27 字數 2218 閱讀 7374

【題目描述】

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

【輸入格式】

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

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

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

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

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

【輸出格式】

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

【樣例輸入】31

4 5 6

1 2 1

1 2【樣例輸出】

35【樣例解釋】

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

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

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

從第 1 個湖到第 2 個湖,從第 2 個湖到第 3 個湖,共用時間 15 分鐘,共得 35 條魚,並且這是最多的數量。

【資料範圍與提示】

對於 100% 的資料,2≤n≤100,1≤h≤20。

【**一:dp】
#include

#include

#include

using namespace std;

inline int read(

)while

(c>=48&

& c<=57)

return x*f;

}int f[

110]

,d[110];

int s[

110]

,ss[

110]

;int dp[30]

[300];

//dp[i]

[j]表示第乙個湖到第i個湖用了j個單位時間,釣的最多魚

int main()

memset(dp,

0,sizeof(dp));

//初始化

int ans=0;

//記錄數量

for(int i=

1;i<=n;i++)

//n個湖

} ans=

max(ans,dp[i]

[h-ss[i]])

;//記錄每一次湖的答案

}printf(

"%d\n"

,ans)

;return0;

}

【貪心**】

#include

#include

#include

using namespace std;

inline int read(

)while

(c>=48&

& c<=57)

return x*f;

}int t[

110]

,f[110

],d[

110]

,a[110];

int main(

)int ans=0;

for(

int i=

1;i<=n;i++)

ans=

max(ans,

sum);}

printf(

"%d\n"

,ans)

;return0;

}

C 一本通 1 1 練習 3 線段

一本通題庫 1429 libreoj 10007 vjudge 在乙個數軸上有n nn條線段,現選取其中k kk條線段使得這k kk條線段兩兩沒有重合部分,問最大的k kk為多少?第一行為乙個正整數n nn,下面n nn行每行2 22個數字a ia i ai b ib i bi 描述每條線段。輸出檔...

一本通 1 1 練習 1 數列極差

題目傳送門 這題也是典型的貪心演算法題。對於這個問題 先通過例項來認識問題所描述的計算過程。令 n 3 取數列 3,5,7 可能有下面三種情況 3 5 1 7 1 113 3 7 1 5 1 111 5 7 1 3 1 109 由此可見先運算小資料的到的是最大值,先運算大資料得到的是最小值。故針對此...

一本通 1 1 練習 2 數列分段

題目link 首先對於乙個序列,從 a 1 l 都符合最佳序列,假設對於第 l 1 個數,它放到從 l 1 r 的區間是一種最優的方法,並且它也可以放在從 1 l 1 這裡,那麼根據貪心,它放到 1 l 1 的序列中是合法的,而且也是一種最優方案。因此,這道題只需要貪心 能將當前數往左放就往左放。1...