-
B - 饭卡
- HDU - 2546
- 预处理一下最大价值的用5元去买。特判初始状态钱小于5的情况
-
#include<bits/stdc++.h> using namespace std; #define maxn 1552 int n,m,a[maxn]; int dp[maxn],ans; int main() { while(cin>>n) { memset(dp,0,sizeof(dp)); if(n==0) break; ans=5; for(int i=0; i<n; i++) cin>>a[i]; sort(a,a+n); cin>>m; if(m>=5) { ans-=a[n-1]; m-=5; } else { cout<<m<<endl; continue; } for(int i=0; i<n-1; i++) for(int j=m; j>=a[i]; j--) dp[j]=max(dp[j],dp[j-a[i]]+a[i]); cout<<ans+m-dp[m]<<endl; } return 0; }
B - 饭卡 HDU - 最值型01背包
最新推荐文章于 2020-01-13 20:04:15 发布