洛谷題解 P1964 mc生存 賣東西

2021-10-16 08:41:15 字數 1132 閱讀 4282

lcy0x1去伺服器的系統商店賣東西。

乙個人的揹包有21格。

一開始他的揹包裡有m件不同的物品(不能賣)。

他要賣n種物品,每種物品有ai件,價值bi,一格可以放ci個,

名字sti(0相同的物品可以放同一格(只要沒放滿)。

問他跑一次最多能賣多少錢。

第一行m,n(0<=m<=21,0<=n<=100);

下面n行 ai,bi,ci,sti(0<=ai<=1344,0<=bi<=10000,0最多賣的錢s(0<=s<=1000000);

輸入:

20 3

63 1 64 yinshifen

1 10 1 men

1 1 64 yinshifen

輸出:

64
這個題比較亂感覺,但是能感受到考察的是dp揹包問題,佔的格數代替的就是物品的重量,但是這個題的資料好像不是很清楚,需要進行處理。

需要對物品的種類格數進行劃分,格數足夠一格了儘管是同一類物品也要看成兩類,而如果數量加起來不到一格,就要合併成乙個物品(體現最多賣的錢)。

所以我的思路就是用乙個結構體對物品封裝,先進行貪心處理,然後用01揹包進行計算。

ac**如下:

#include

#include

#include

#include

#include

using

namespace std;

typedef

struct object

ob;int

main()

; ob o[

1000];

cin>>m>>n;

m =21- m;

int ans[

1000

][m+1]

;for

(int i =

1;i <= n;i++

)else}}

}for

(int i =

1;i <= n;i++

)for

(int i =

1;i <= n;i++)}

cout<[m]

}

洛谷 P1964 mc生存 賣東西

伺服器好好玩 lcy0x1去伺服器的系統商店賣東西。乙個人的揹包有21格。一開始他的揹包裡有m件不同的物品 不能賣 他要賣n種物品,每種物品有ai件,價值bi,一格可以放ci個,名字sti 0 相同的物品可以放同一格 只要沒放滿 問他跑一次最多能賣多少錢。輸入格式 第一行m,n 0 m 21,0 n...

洛谷 P1964 mc生存 賣東西

伺服器好好玩 lcy0x1去伺服器的系統商店賣東西。乙個人的揹包有21格。一開始他的揹包裡有m件不同的物品 不能賣 他要賣n種物品,每種物品有ai件,價值bi,一格可以放ci個,名字sti 0相同的物品可以放同一格 只要沒放滿 問他跑一次最多能賣多少錢。第一行m,n 0 m 21,0 n 100 下...

洛谷P1964 mc生存 賣東西 題解 多重揹包

對於第 i 件物品 然後對這些物品進行多重揹包即可。然後這裡需要注意的一點是樣例中的第 1 件 和 第 3 件物品屬於同一件物品,所以可以放到同乙個格仔裡。然後我希望題目的資料能夠保證 同一件物品的價值 b i 都得一樣 不然解決起來就很麻煩。ac則保證此條件滿足 實現 如下 include usi...