洛谷1417烹飪方案 貪心 01揹包

2022-05-20 12:17:25 字數 1249 閱讀 5164

這個題目不是單純的01揹包問題,因為01揹包給出的物品的價值是不變的,但是這個題目中物品的價值會隨著時間的增長而降低,所以要確定什麼優先順序取(x,y)才會得到更有的結果,所以就涉及到了排序和貪心。還有一點與01揹包不痛,完後第n件物品的完成時時間越少越好,因為時間長了之後物品的價值下降,所以最後時刻完成的不一定是最優結果。證明過程如下:(參考洛谷某部落格)

**如下:

1 #include2

using

namespace

std;

3 typedef unsigned int

ui;4 typedef long

long

ll;5 typedef unsigned long

long

ull;

6#define pf printf

7#define mem(a,b) memset(a,b,sizeof(a))

8#define prime1 1e9+7

9#define prime2 1e9+9

10#define pi 3.14159265

11#define lson l,mid,rt<<1

12#define rson mid+1,r,rt<<1|1

13#define scand(x) scanf("%llf",&x)

14#define f(i,a,b) for(int i=a;i<=b;i++)

15#define scan(a) scanf("%d",&a)

16#define dbg(args) cout<

#define inf 0x3f3f3f3f

18#define maxn 100005

19int

n,m,t;

20ll dp[maxn];

21struct

nodep[maxn];

24bool cmp(node& x,node&y)

2528

intmain()

2944 ll ans=0

;45 f(i,1,t)ans=max(ans,dp[i]);//

完成第n件的時間越短,結果可能更優

46 pf("

%lld

",ans);

47 }

洛谷P1417 烹調方案 貪心 揹包dp

題目大意 一共有 n 件食材,每件食材有三個屬性,ai,bi和ci,如果在t時刻完成第i樣食材則得到ai t bi的美味指數,用第i件食材做飯要花去ci的時間。眾所周知,gw的廚藝不怎麼樣,所以他需要你設計烹調方案使得美味指數最大。題解 這道題需要對揹包問題有更加深入的理解。可以發現,如果不進行排序...

洛谷 P1417 烹調方案 (01揹包拓展)

一看到這道題就是01揹包 但是我注意到價值和當前的時間有關。沒有想太多,直接寫,0分 然後發現輸入方式不對 改了之後只有25分 我知道wa是因為時間會影響價值,但不知道怎麼做。後來看了題解,發現我對01揹包理解不夠透徹 普通01揹包做下來放入物品的順序是1到n的 因為這個時候順序沒有關係,所以可以直...

洛谷 P1417 烹調方案 排序 01揹包

洛谷 p1417 烹調方案 排序 01揹包 那麼首先裝物品y所獲得的價值為 a y p c y b y a x p c y c x b x 對這兩個式子化簡,得到 的條件是c x b y include include include include include include include ...