洛谷P1782 旅行商的揹包 多重揹包

2021-09-07 07:33:07 字數 1329 閱讀 2998

小s堅信任何問題都可以在多項式時間內解決,於是他準備親自去當一回旅行商。在出發之前,他購進了一些物品。這些物品共有n種,第i種體積為vi,價值為wi,共有di件。他的揹包體積是c。怎樣裝才能獲得盡量多的收益呢?作為一名大神犇,他輕而易舉的解決了這個問題。

然而,就在他出發前,他又收到了一批奇貨。這些貨共有m件,第i件的價值yi與分配的體積xi之間的關係為:yi=ai*xi^2+bi*xi+ci。這是件好事,但小s卻不知道怎麼處理了,於是他找到了一位超級神犇(也就是你),請你幫他解決這個問題。

輸入格式:

第一行三個數n,m,c,如題中所述;

以下n行,每行有三個數vi,wi,di,如題中所述;

以下m行,每行有三個數ai,bi,ci,如題中所述。

輸出格式:

僅一行,為最大的價值。

輸入樣例#1:

2 1 10

1 2 3

3 4 1

-1 8 -16

輸出樣例#1:

10

【資料範圍】

對於100%的資料,1≤n≤10,000,1≤m≤5,1≤c≤10000,

1≤wi,vi,di≤1000,-1000≤ai,bi,ci≤1000.

【樣例解釋】

前兩種物品全部選走,最後乙個奇貨分給4的體積,收益為2*3+4*1+-1*16+8*4+-16=10。

時限3s

多重揹包 二進位制拆分

m很小,爆枚即可

#include#include

#include

#include

#include

using

namespace

std;

const

int n=1e4+5,inf=1e9;

intread()

while(c>='

0'&&c<='9')

return x*f;

}int

n,v,w,c,c,m,a,b;

intf[n];

inline

void zp(int v,int

w)inline

void cp(int v,int

w)inline

void mp(int v,int w,int

c)

int k=1

;

while(kzp(v*c,w*c);

}int

main()

for(int i=1;i<=m;i++)

printf("%d

",f[c]);

}

洛谷P1782 旅行商的揹包

傳送門啦 這個題不用二進位制優化的話根本不行,現學的二進位制優化,調了一段時間終於a了,不容易。如果不懂二進位制優化的話可以去看我那個部落格 二進位制優化多重揹包入口 不想tle,不要打memset,一定要用快讀,聽別人說不用快讀卡三個點,幸虧我習慣打快讀。include include inclu...

洛谷 P1060 01揹包

金明今天很開心,家裡購置的新房就要領鑰匙了,新房裡有一間他自己專用的很寬敞的房間。更讓他高興的是,媽媽昨天對他說 你的房間需要購買哪些物品,怎麼布置,你說了算,只要不超過n元錢就行 今天一早金明就開始做預算,但是他想買的東西太多了,肯定會超過媽媽限定的n元。於是,他把每件物品規定了乙個重要度,分為5...

洛谷p1049 01揹包

dp水之旅 揹包有乙個箱子容量為v 正整數,0 v 20000 同時有n個物品 0 n 30,每個物品有乙個體積 正整數 要求n個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。輸入格式 乙個整數,表示箱子容量 乙個整數,表示有n個物品 接下來n行,分別表示這n 個物品的各自體積 輸出格式 乙個...