小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 101 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 個物品的各自體積 輸出格式 乙個...