洛谷 P1717 釣魚

2022-05-21 06:39:02 字數 1174 閱讀 9511

話說發源於小朋友精心設計的遊戲被電腦組的童鞋們藐殺之後非常不爽,為了表示安慰和鼓勵,vip999決定請他吃一次「年年大豐收」,為了表示誠意,他還決定親自去釣魚,但是,因為還要準備2013noip,z老師只給了他h(1<=h<=16)個小時的空餘時間,假設有n(2<=n<=25)個魚塘都在一條水平路邊,從左邊到右編號為1、2、3、。。。、n)。vip是個很講究效率的孩子,他希望用這些時間釣到盡量多的魚。他從湖1出發,向右走,有選擇的在一些湖邊停留一定的時間釣魚,最後在某乙個湖邊結束釣魚。他測出從第i個湖到i+1個湖需要走5*ti分鐘的路,還測出在第i個湖邊停留,第乙個5分鐘可以釣到魚fi,以後再每釣5分鐘魚,魚量減少di。為了簡化問題,他假定沒有其他人釣魚,也不會有其他因素影響他釣到期望數量的魚。請程式設計求出能釣最多魚的數量。

輸入格式:

第一行:湖的數量n。

第二行:時間h(小時)。

第三行:n個數,f1,f2,…fn。

第四行:n個數,d1,d2,….dn。

第五行:n-1個數,t1,t2,….tn-1

輸出格式:

乙個數,所能釣魚的最大數量。

輸入樣例#1:

2

110 1

2 5

2

輸出樣例#1:

31

題解:

貪心,考慮列舉我們現在一定會走到那個湖,然後先將時間先扣上,然後我們每次選取

扣除時間後可到達的湖中,打怪經驗最多的關卡,用優先佇列,維護一下就可以了,正確性十分顯

然,交給讀者思考。

**:

#include #include 

#include

#include

#include

#include

#include

using

namespace

std;

struct

node

};int

n,h;

int f[100],d[100],t[100],ans=0

;priority_queue

q;void work(int

hh));

while(tim>0&&!q.empty()));

}ans=max(ans,tot);

}int

main()

洛谷 P1717 釣魚

題目 釣魚 題意 剛開始沒讀懂 就是說有一排魚塘 i n 每乙個魚塘初始魚的數量為fi,在這個魚塘中每釣5分鐘魚的數量都會減少di,且從第i個魚塘走到第i 1個魚塘要用ti的時間。問從第乙個魚塘開始走,到任意乙個魚塘結束,最多可以獲得的魚的數量。思路 luogu大佬 超神火星人 的部落格 列舉最後最...

洛谷P1717 釣魚

同步 話說發源於小朋友精心設計的遊戲被電腦組的童鞋們藐殺之後非常不爽,為了表示安慰和鼓勵,vip999 決定請他吃一次 年年大豐收 為了表示誠意,他還決定親自去釣魚。但是,因為還要準備 noip2013,z老師只給了他 hhh 個小時的空餘時間,假設有 nnn 個魚塘都在一條水平路邊,從左邊到右編號...

洛谷P1717 釣魚

題目大意 給定 n 個位置,每個位置有乙個答案貢獻值,在乙個位置加了一次該位置的答案貢獻值之後,該值會減掉一部分,從乙個位置移動到另乙個位置需要花費一定的時間,問 給定 m 單位的時間,如何移動使得答案貢獻值最大。初始在1位置 題解 引理 若想使答案貢獻值最大,一定不能走回頭路,因為走回頭路時,可以...