牛客多組揹包

2021-09-29 22:36:50 字數 1340 閱讀 7841

牛客多組揹包:能天使的願望

題意:有n個店鋪,每個店鋪中有m把銃,然後給出n個店鋪賣1--m把銃需要花費的錢,現在我們需要賣k把銃,因為需要運送的關係,當買的銃少於y把時,需要支付郵費

輸入:

第一行輸入: n m k y

第二行輸入: n個商店的郵費

接下來n行輸入: 每個商店的賣銃1---m把的花費

輸出: 輸出買k把銃的最小花費

題解:一道多組揹包問題

首先我們把資料處理一下,把每個商店小於y把銃的價錢給其賦上

然後寫出動態轉移方程dp[j]=min(dp[j],dp[j-z]+ori_pri[i][z]),然後就按多組揹包的寫法寫即可

錯誤ac**:

#include

using namespace std;

#define ll long long

ll n,m,k,y;

const ll maxn=

1e3+5;

ll oil_pri[maxn]

;ll ori_pri[maxn]

[maxn]

;ll dp[maxn]

;int main()}

memset(dp+1,

0x3f3f3f3f

,sizeof(dp));

for(ll i=

1; i<=n; i++)

}}printf(

"%lld\n"

,dp[k]);

}}

2019/12/21再次寫這一題 真的服了,乙個錯誤**ac了,另乙個和第乙個格式相同卻過不去,上面**是錯誤的,但是能ac,但是陣列越界,並沒有給報

ac**:

#includeusing namespace std;

#define ll long long

const ll maxn=1e3+5;

ll dp[maxn];

ll oil_pay[maxn];

ll use_pay[maxn][10*maxn];

int main()

for(ll i=1; i<=n; i++)}}

printf("%lld\n",dp[k]);

}

牛客 Subset of Five 揹包

題目大意 給出 n 個數字,要求選出一些數字,使得這些數字之和可以在整除五的前提下盡量大 題目分析 一開始以為是貪心問題,但貪心發現不太好實現,問了問 zx 學長,給我提示說是揹包dp,仔細想了一下確實如此 dp i j 代表處理完前 i 個數後,5 的結果為 j 時的最大數字之和,這樣答案顯然為 ...

牛客 01揹包問題

題目 購買禮品是,每一款禮品的受歡迎程度 熱度值 各不相同,現給出總金額以及各個禮品的單價和熱度值,如何購買可以使得所有禮品的總熱度值最高。輸入 第一行是乙個正整數,表示總金額 不大於1000 第二行是乙個長度為n的正整數陣列,表示禮品單價 n不大於100 第三行是乙個長度為n的正整數陣列,表示對應...

牛客網 採藥(01揹包)

輸入描述 輸入的第一行有兩個整數t 1 t 1000 和m 1 m 100 t代表總共能夠用來採藥的時間,m代表山洞裡的草藥的數目。接下來的m行每行包括兩個在1到100之間 包括1和100 的的整數,分別表示採摘某株草藥的時間和這株草藥的價值。輸出描述 可能有多組測試資料,對於每組資料,輸出只包括一...