submit
problem description
嘩啦啦村的食堂很奇怪,就是如果這個飯卡所剩金額低於5元的話,這個飯卡就不能刷了。
也就是說,只要這個飯卡金額大於等於5元,就可以隨便刷~
有一天,小彭玉看了看嘩啦啦食堂的飯,「哇,好好吃!我要全部都買下來!」
但是小彭玉並沒有那麼多錢,於是他準備充分利用自己的錢,去買這些食物!
請問最後小彭玉的飯卡餘額最少能到多少?
input
多組測試資料(最多100組)
第一行 n,表示有n個菜
第二行 接下來n個數字,a[i]表示第i道菜多少錢
第三行 乙個數m,表示小彭玉的飯卡,一開始有m元
1<=n<=1000,1<=a[i]<=10000,1<=m<=10000
output
輸出乙個整數,表示最後飯卡顯示的金額數
sample input
1sample output10000610
1 2 3 2 1 1 2 3 2 1
50
-999432解法:01揹包的使用,因為5塊錢可以買任何東西,所以,我們把**最貴的菜獨自拿出來,我們只需要用(n-1)份菜去查詢價錢容量為(m-5),所能夠買到的最大值。最後在減去**最大的那份菜的**即可。
1 #include2 #includeview code3 #include4 #include5
using
namespace
std;
6#define max 10100
7int
dp[max];
8int
val[max];
9int
main()
1019 scanf("
%d",&m);
20for(i=0;i<=m;i++)dp[i]=0;21
if(m<5||n==0)
22else
2329
for(j=m-5;j>=val[i];j--)
3035}36
}37 printf("
%d\n
",m-dp[m-5]-max);38}
39}40return0;
41 }
小Z的AK計畫
洛谷鏈結 在小z的家鄉,有機房一條街,街上有很多機房。每個機房裡都有一萬個人在切題。小z剛刷完codechef,準備出來逛逛。機房一條街有 n 個機房,第 i 個機房的座標為 xi 小z的家座標為 0。小z在街上移動的速度為1,即從 x1 到 x2 所耗費的時間為 x1 x2 每個機房的學生數量不同...
小Z的AK計畫
洛谷鏈結 在小z的家鄉,有機房一條街,街上有很多機房。每個機房裡都有一萬個人在切題。小z剛刷完codechef,準備出來逛逛。機房一條街有 n 個機房,第 i 個機房的座標為 xi 小z的家座標為 0。小z在街上移動的速度為1,即從 x1 到 x2 所耗費的時間為 x1 x2 每個機房的學生數量不同...
Luogu 小Z的AK計畫
luogu2107 一開始打了乙個60分的暴力dp,結果一分都沒得 本地調了好久才發現是沒開long long。由於我的dp方程沒有任何性質,就是乙個01揹包,所以就沒啥可優化的了。這個題的正解其實不是dp,而是貪心 由於是單向的走,在每個位置選用時少的機房ak總是好的,這也就等價於不在用時多的機房...