計蒜客 《飯卡》

2021-10-23 18:11:30 字數 652 閱讀 3502

01 揹包 + 貪心

本題是對揹包的巧妙應用,只有理解了揹包才能輕鬆的做出這道題目。

排序後,把前 n-1 個物品計算 01 揹包,計算出揹包最大可以裝多少價值的物品。最後加上最大的物品的價值就可以了。

#includeusing namespace std;

int a[1006],dp[2056];

int main()

cin>>m;

int mx=0;

dp[0]=1;

sort(a,a+n);

for (int i=0;i=0;j--)

} }cout

f陣列就是dp陣列,只不過是一維的

其實就是反過來考慮,因為我們陣列的下標不能是負數 所以f[i]意義是總價值位i的物品能不能買

從m-5開始更新是因為少於5就不能買了

因此從m-5開始往下更新。剩下的狀態都可以隨意超過m,因為可以透支

j表示已經買了多少價值的飯

j+a[i]表示已經買了j,還要買a[i]得到的總價值

0是什麼都不買的情況

就是dp的初始狀態

其他買不買是要算出來,由dp公式轉移得到

開始只能從dp[0]開始轉移

*/

計蒜客 2019計蒜之道D

題意 現在給定你乙個字串 s ss 以及乙個整數 k kk,請求出 s ss的字典序最小的長度為 k kk的子串行。資料範圍 0 s 5000000 00 s 5000 000 樣例輸入 helloworld 5樣例輸出 ellld思路 假如我們先不考慮長度為k的限制我們應當怎麼做?我們以樣例為例子...

計蒜客 蒜廠活動

蒜廠的 5個人坐在乙個圓桌,每人頭頂都帶一頂帽子,有的人的帽子是白色的,有的人的帽子是黑色的。a 說 我看到有三個人戴的白帽子,一人戴的黑帽子。b 說 我看見其它四人戴的都是白帽子。c 說 我看見一人戴的白帽子,其它三人戴的黑帽子。d 說 我看見四人戴的的都是白帽子。e 什麼也沒說。如果戴黑帽子的人...

計蒜客 解碼

蒜頭君自己發明了一種字串的編碼方式,對於只含有大小寫字母的字串,可以用數字來表示括號裡面的串連續出現的次數 數字有可能超過一位數 比如a abcd 2等價於aabcdabcd。特別地,如果數字前面沒有括號,表示緊貼數字的前面的 乙個字母 出現的次數。比如abc2表示abcc。為了降低解碼的難度,蒜頭...