牛客 Subset of Five 揹包

2021-10-07 06:30:39 字數 607 閱讀 8041

題目大意:給出 n 個數字,要求選出一些數字,使得這些數字之和可以在整除五的前提下盡量大

題目分析:一開始以為是貪心問題,但貪心發現不太好實現,問了問 zx 學長,給我提示說是揹包dp,仔細想了一下確實如此

dp[ i ][ j ] 代表處理完前 i 個數後,%5 的結果為 j 時的最大數字之和,這樣答案顯然為 dp[ n ][ 0 ] 了,轉移狀態也比較簡單

**:

#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

typedef unsigned long long ull;

const int inf=0x3f3f3f3f;

const int n=1e6+100;

ll dp[n][5];

int main()

} printf("%lld\n",max(dp[n][0],0ll));

return 0;

}

牛客多組揹包

牛客多組揹包 能天使的願望 題意 有n個店鋪,每個店鋪中有m把銃,然後給出n個店鋪賣1 m把銃需要花費的錢,現在我們需要賣k把銃,因為需要運送的關係,當買的銃少於y把時,需要支付郵費 輸入 第一行輸入 n m k y 第二行輸入 n個商店的郵費 接下來n行輸入 每個商店的賣銃1 m把的花費 輸出 輸...

牛客 01揹包問題

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

牛客網 採藥(01揹包)

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