魚塘釣魚 fishing)

2021-08-18 16:54:00 字數 1223 閱讀 4730

時間限制: 1000 ms        記憶體限制: 65536 kb

提交數: 149     通過數:81

三種做法:

純貪心做法

堆維護dp

有n個魚塘排成一排(n<100),每個魚塘中有一定數量的魚,例如:n=5時,如下表:

魚塘編號每1分鐘能釣到的魚的數量(1..1000)每1分鐘能釣魚數的減少量(1..100)當前魚塘到下乙個相鄰魚塘需要的時間(單位:分鐘)11023214453206441654593魚塘編號12345每1分鐘能釣到的魚的數量(1..1000)101420169每1分鐘能釣魚數的減少量(1..100)24653當前魚塘到下乙個相鄰魚塘需要的時間(單位:分鐘)3544

即:在第1個魚塘中釣魚第1分鐘內可釣到10條魚,第2分鐘內只能釣到8條魚,……,第5分鐘以後再也釣不到魚了。從第1個魚塘到第2個魚塘需要3分鐘,從第2個魚塘到第3個魚塘需要5分鐘,……

給出乙個截止時間t(t<1000),設計乙個釣魚方案,從第1個魚塘出發,希望能釣到最多的魚。

假設能釣到魚的數量僅和已釣魚的次數有關,且每次釣魚的時間都是整數分鐘。

共5行,分別表示:

第1行為n;

第2行為第1分鐘各個魚塘能釣到的魚的數量,每個資料之間用一空格隔開;

第3行為每過1分鐘各個魚塘釣魚數的減少量,每個資料之間用一空格隔開;

第4行為當前魚塘到下乙個相鄰魚塘需要的時間;

第5行為截止時間t。

乙個整數(不超過231−1231−1),表示你的方案能釣到的最多的魚。

5
10 14 20 16 9
2 4 6 5 3
3 5 4 4
14
76

no我們現在假設最後在第i個魚塘釣到魚數目最多,那麼用在路上的時間是固定的,原因:我們不會先跑到第i個魚塘裡釣一分鐘然後返回前乙個魚塘裡釣魚,這樣路上會消耗大量時間,不划算,還有就是我們再沒有去到某個魚塘前,魚的數量不會減少。所以我們可以看出從左到右的順序釣魚,即乙個人在1~i-1個魚塘之間隨便走動,只要盡可能選擇魚多的就行。其實這裡不是模擬釣魚過程,而是統計在各個魚塘的釣魚次數。

#includeusing namespace std;

int main()

maxx=max(maxx,ans);

t1+=t[k];//路程提前計算

}cout

}

魚塘釣魚(fishing)

給出乙個截止時間t t 1000 設計乙個釣魚方案,從第1個魚塘出發,希望能釣到最多的魚。假設能釣到魚的數量僅和已釣魚的次數有關,且每次釣魚的時間都是整數分鐘。輸入格式 輸入檔案共5行,分別表示 第1行為n 第2行為第1分鐘各個魚塘能釣到的魚的數量,每個資料之間用一空格隔開 第3行為每過1分鐘各個魚...

魚塘釣魚 fishing)

魚塘釣魚 fishing 時間限制 1000 ms 記憶體限制 65536 kb 提交數 71 通過數 42 題目描述 有n個魚塘排成一排 n 100 每個魚塘中有一定數量的魚,例如 n 5時,如下表 魚塘編號 每1分鐘能釣到的魚的數量 1.1000 每1分鐘能釣魚數的減少量 1.100 當前魚塘到...

魚塘釣魚題解(堆解決)

這道題可以用 貪心 大根堆 來解決。先把題目放上來。描述 有n個魚塘排成一排 n 100 每個魚塘中有一定數量的魚,例如 n 5時,如下表 魚塘編號 123 45每1分鐘能釣到的魚的數量 1.1000 10 1420169 每1分鐘能釣魚數的減少量 1.100 246 5354 4即 在第1個魚塘中...