洛谷 P1417 烹調方案

2022-05-14 06:12:59 字數 1914 閱讀 5332

由於你的幫助,火星只遭受了最小的損失。但gw懶得重建家園了,就造了一艘飛船飛向遙遠的earth星。不過飛船飛到一半,gw發現了乙個很嚴重的問題:肚子餓了~ gw還是會做飯的,於是拿出了儲藏的食物準備填飽肚子。gw希望能在t時間內做出最美味的食物,但是這些食物美味程度的計算方式比較奇葩,於是絕望的gw只好求助於你了。

一共有n件食材,每件食材有三個屬性,ai,bi和ci,如果在t時刻完成第i樣食材則得到ai-t*bi的美味指數,用第i件食材做飯要花去ci的時間。

眾所周知,gw的廚藝不怎麼樣,所以他需要你設計烹調方案使得美味指數最大

輸入格式:

第一行是兩個正整數t和n,表示到達地球所需時間和食材個數。

下面一行n個整數,ai

下面一行n個整數,bi

下面一行n個整數,ci

輸出格式:

輸出最大美味指數

輸入樣例#1:

74 1

5022

47

輸出樣例#1:

408
【資料範圍】

對於40%的資料1<=n<=10

對於100%的資料1<=n<=50

所有數字均小於100,000

【題目**】

tinylic改編

這是乙個刷屏ac的題目(滿滿的都是淚)

這個題跟國王遊戲的貪心方式有一些類似

可以考慮 有兩個菜的三值分別為a1,b1,c1,a2,b2,c2

則 兩種情況為a1-(t+c1)*b1+a2-(t+c1+c2)*b2  (1)

a2-(t+c2)*b2+a1-(t+c1+c2)*b1  (2)

如果(1)>(2)則c1*b2

1

program

cook;

2type food=record

3a,b,c:int64;

4end

; 5

var fd:array[0..100001] of

food;

6n,i,j,t:longint;

7 f:array[0..100001] of

int64;

8max:int64;

9begin

10read(t,n);

11for i:=1

to n do

read(fd[i].a);

12for i:=1

to n do

read(fd[i].b);

13for i:=1

to n do

read(fd[i].c);

14for i:=1

to n-1

do15

for j:=i+1

to n do //千萬別打錯排序!!!

16if fd[i].b*fd[j].cthen

17begin

18 fd[0]:=fd[i];

19 fd[i]:=fd[j];

20 fd[j]:=fd[0

];

21end

; 22

for i:=1

to n do

23for j:=t downto fd[i].c do

24if f[j-fd[i].c]+fd[i].a-j*fd[i].b>f[j] then f[j]:=f[j-fd[i].c]+fd[i].a-j*fd[i].b;

25for i:=1

to t do

if maxthen max:=f[i];

26writeln(max);

27end.

洛谷P1417 烹調方案

由於你的幫助,火星只遭受了最小的損失。但gw懶得重建家園了,就造了一艘飛船飛向遙遠的earth星。不過飛船飛到一半,gw發現了乙個很嚴重的問題 肚子餓了 gw還是會做飯的,於是拿出了儲藏的食物準備填飽肚子。gw希望能在t時間內做出最美味的食物,但是這些食物美味程度的計算方式比較奇葩,於是絕望的gw只...

洛谷P1417 烹調方案

這道題不同於普通的01揹包,不同的先選擇的做菜策略會對之後產生不同的影響,即不滿足 無後效性 但是,考慮一種選擇策略,假設有兩個先後做的菜i和j,交換他們的順序會產生什麼影響呢?假設ij之前的時間為t 先i後j a i t c i b i a j t c i c j b j 先j後i a j t c...

洛谷 P1417烹調方案

洛谷 p1417烹調方案 由於你的幫助,火星只遭受了最小的損失。但gw懶得重建家園了,就造了一艘飛船飛向遙遠的earth星。不過飛船飛到一半,gw發現了乙個很嚴重的問題 肚子餓了 gw還是會做飯的,於是拿出了儲藏的食物準備填飽肚子。gw希望能在t時間內做出最美味的食物,但是這些食物美味程度的計算方式...