1. 程式人生 > >Python“最短”挑戰(12.25)

Python“最短”挑戰(12.25)

Description

John有h個小時的時間想去釣魚。(1<=h<=16).有n個池塘(2<=n<=25),它們的分佈沿著一條單行的小路。John從第一個池塘處出發,他可以沿著小路向前走,在想停下來的池塘處釣魚,對於路徑的終點沒有限制。為了釣到最多的魚,John對各個池塘做了調查。若給路徑上的池塘依次編號,,則對於每個池塘,開始釣魚時,每5分鐘內期望是可以釣到f[i]條魚,隨著時間的推移,每過5分鐘,可以釣到的魚減少d[i]條。若某個5分鐘的時間段內可以釣到的魚少於等於d[i],則下一個5分鐘在這個池塘就釣不到魚了。用t[i]表示從池塘 i 到池塘 i+1 所需要的時間。單位是5分鐘(==!), 即:若t[3] = 4,表示從池塘3到池塘4需要4*5=20分鐘。John在每個池塘釣魚的時間都必須是5的倍數。求期望能釣到最多魚的釣魚計劃,並輸出在每個池塘釣魚的時間(分鐘為單位)和能釣到的魚總數。當有多個方案都是最優解時,選擇在第一個湖的時間最長的方案,若仍相等,選擇在第二個湖時間最長的方案,依此類推。

Input

每個測試用例,首先給出池塘數n,然後是時間h(小時為單位),接下來的兩行分別有n個整數,分別表示f[i]和d[i],接下來的一行為n-1個整數,表示t[i].n為0時表示輸入結束。

Output

對於每個測試用例,第一行依次輸出在每個池塘的停留時間(分鐘為單位),每個時間之間用逗號+空格分開。第二行輸出能釣到的最多的魚的數量,格式見Sample.
其餘要求同首題

Sample Input

2 
1 
10 1 
2 5 
2 
4 
4 
10 15 20 17 
0 3 4 3 
1 2 3 
4 
4 
10 15 50 30 
0 3 4 3 
1 2 3 
0 

Sample Output

45, 5 
Number of fish expected: 31 

240, 0, 0, 0 
Number of fish expected: 480 

115, 10, 50, 35 
Number of fish expected: 724