HDU 1248 寒冰王座(完全揹包)

2021-07-16 14:46:32 字數 1242 閱讀 5070

problem description

不死族的巫妖王發工資拉,死亡騎士拿到一張n元的鈔票(記住,只有一張鈔票),為了防止自己在戰鬥中頻繁的死掉,他決定給自己買一些道具,於是他來到了地精商店前.

死亡騎士:"我要買道具!"

地精商人:"我們這裡有三種道具,血瓶150塊乙個,魔法藥200塊乙個,無敵藥水350塊乙個."

死亡騎士:"好的,給我乙個血瓶."

說完他掏出那張n元的大鈔遞給地精商人.

地精商人:"我忘了提醒你了,我們這裡沒有找客人錢的習慣的,多的錢我們都當小費收了的,嘿嘿."

死亡騎士:"......"

死亡騎士想,與其把錢當小費送個他還不如自己多買一點道具,反正以後都要買的,早點買了放在家裡也好,但是要盡量少讓他賺小費.

現在死亡騎士希望你能幫他計算一下,最少他要給地精商人多少小費.

input

輸入資料的第一行是乙個整數t(1<=t<=100),代表測試資料的數量.然後是t行測試資料,每個測試資料只包含乙個正整數n(1<=n<=10000),n代表死亡騎士手中鈔票的面值.

注意:地精商店只有題中描述的三種道具.

output

對於每組測試資料,請你輸出死亡騎士最少要浪費多少錢給地精商人作為小費.

sample input

2

900250

sample output

0

50

#include #include #include #include using namespace std;

int v[4];

int f[5][10010];

int main(){

int t;

scanf("%d",&t);

v[0]=0;

v[1]=150;v[2]=200;v[3]=350;

while(t--){

memset(f,0,sizeof(f));

int n;

scanf("%d",&n);

for(int i=1;i<=3;i++){

for(int j=0;j<=n;j++){

if(j對於某個狀態,有買當前物品k個和不買當前物品兩種狀態;買當前物品k個,則為上乙個狀態錢數為j-k*v[i]時的狀態時加上這次買k個物品的價值;不買的話就是當前的狀態的上乙個狀態;

最後求的是買的東西最大價值,而求的是零錢,所以結果為n-f[3][n];

HDU1248 寒冰王座 完全揹包

problem description 不死族的巫妖王發工資拉,死亡騎士拿到一張n元的鈔票 記住,只有一張鈔票 為了防止自己在戰鬥中頻繁的死掉,他決定給自己買一些道具,於是他來到了地精商店前.死亡騎士 我要買道具 地精商人 我們這裡有三種道具,血瓶150塊乙個,魔法藥200塊乙個,無敵藥水350塊乙...

完全揹包 HDU 1248 寒冰王座

有n中物品和乙個容量為v的揹包,每種物品都有無限件可用,放入第i中物品所佔的空間是ci,價值是wi,求解將哪些物品放入揹包中可使這些物品的耗費空間總和不超過揹包的容量,且價值總和最大。for i 1 i n i for v ci v v v f v max f v f v ci wi 在01揹包中讓...

HDU 1248 寒冰王座(完全揹包)

問題描述 不死族的巫妖王發工資拉,死亡騎士拿到一張n元的鈔票 記住,只有一張鈔票 為了防止自己在戰鬥中頻繁的死掉,他決定給自己買一些道具,於是他來到了地精商店前.死亡騎士 我要買道具 地精商人 我們這裡有三種道具,血瓶150塊乙個,魔法藥200塊乙個,無敵藥水350塊乙個.死亡騎士 好的,給我乙個血...