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。為了降低解碼的難度,蒜頭...