hdu2546(01背包变形)
2016-08-31 17:21
309 查看
01背包变形
根据情况变形,由题意知,首先拿出5元买最贵的东西,那接下来就是背包容量m-5,物品数量n-1 的01背包问题了
状态方程
dp[j]=max(dp[j],dp[j-vo[i]+vo[i])
根据情况变形,由题意知,首先拿出5元买最贵的东西,那接下来就是背包容量m-5,物品数量n-1 的01背包问题了
状态方程
dp[j]=max(dp[j],dp[j-vo[i]+vo[i])
#include<iostream> #include <cstring> #include <algorithm> using namespace std; int vo[1005]; int dp[1005]; int main() { int n,v; while(cin>>n&&n) { for(int i=1;i<=n;i++) cin>>vo[i]; cin>>v; memset(dp,0,sizeof(dp)); sort(vo+1,vo+n+1);//wa==>(vo,vo+n) int maxn=vo ; if(v<5) cout<<v<<endl; else{ v=v-5; for(int i=1;i<n;i++) { for(int j=v;j>=vo[i];j--) { if(dp[j]<dp[j-vo[i]]+vo[i])//或者用dp[j]=max(dp[j],dp[j-vo[i]+vo[i]) dp[j]=dp[j-vo[i]]+vo[i]; } } cout<<v+5-dp[v]-maxn<<endl; } } return 0; }
相关文章推荐
- 4000 hdu2639(01背包变形-第k大背包)
- hdu 2670 01背包变形
- HDU 2955 (01背包变形)
- HDU-2159 FATE,01背包变形
- DP 之 SPOJ SCUBADIV (三维 01背包变形)
- hdu2126 Buy the souvenirs 01背包变形 dp
- hdoj 2955 01背包变形+简单的概率论
- 【01背包变形】POJ 2184 Cow Exhibition
- hdu 2955 Robberies 01背包变形
- HDU 2546 饭卡(带限制的01背包变形)
- poj2184(01背包变形)
- hdu2955 01背包变形
- hdu 4104 Discount 01背包变形+优化
- Pick The Sticks HDU - 5543 变形01背包
- POJ 2184 Cow Exhibition (01背包变形)(或者搜索)
- UVa 1213 (01背包变形) Sum of Different Primes
- DP 之 SPOJ SCUBADIV (三维 01背包变形)
- poj2184-01背包变形(正负背包)
- POJ3466(01背包变形)
- 01背包的变形