魚塘釣魚(fishing)
時間限制: 1000 ms 記憶體限制: 65536 kb
提交數: 71 通過數: 42
【題目描述】
有n個魚塘排成一排(n<100),每個魚塘中有一定數量的魚,例如:n=5時,如下表:
魚塘編號
每1分鐘能釣到的魚的數量(1..1000)
每1分鐘能釣魚數的減少量(1..100)
當前魚塘到下乙個相鄰魚塘需要的時間(單位:分鐘)
1 10
2 3
2 14
4 5
3 20
6 4
4 16
5 4
5 9
3魚塘編號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。
【輸出】
乙個整數(不超過
2 31
−1 231−1
),表示你的方案能釣到的最多的魚。
【輸入樣例】
5 10 14 20 16 9
2 4 6 5 3
3 5 4 4
14 【輸出樣例】
76
#include
using
namespace
std;
typedef
long
long
int ll;
const
int n=1000+10;
int a[n],b[n],c[n],ans;
priority_queueint,int> >q;//預設first優先順序高
int main()
for(int i=1;i<=n;i++)
for(int i=1;icin>>c[i];
}cin>>t;
int t1=0,tim,mx=-1;
for(int i=1;i<=n;i++)//列舉每個魚塘
while(tim>0&&q.top().first>0)
if(ans>mx)
mx=ans;
t1+=c[i];
}cout
0;}
魚塘釣魚(fishing)
給出乙個截止時間t t 1000 設計乙個釣魚方案,從第1個魚塘出發,希望能釣到最多的魚。假設能釣到魚的數量僅和已釣魚的次數有關,且每次釣魚的時間都是整數分鐘。輸入格式 輸入檔案共5行,分別表示 第1行為n 第2行為第1分鐘各個魚塘能釣到的魚的數量,每個資料之間用一空格隔開 第3行為每過1分鐘各個魚...
魚塘釣魚 fishing)
時間限制 1000 ms 記憶體限制 65536 kb 提交數 149 通過數 81 三種做法 純貪心做法 堆維護dp 有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個魚塘中...