洛谷1048 採藥(01揹包)
阿新 • • 發佈:2018-11-11
傳送門
【題目分析】
這個兩維降一維妙妙妙啊。。。。。。
好吧我已經菜的做01揹包了。。。。
【程式碼~】
#include<bits/stdc++.h> using namespace std; const int MAXN=110; int n,m; int w[MAXN],c[MAXN]; int dp[1010]; int Read(){ int i=0,f=1; char c; for(c=getchar();(c>'9'||c<'0')&&c!='-';c=getchar()); if(c=='-') f=-1,c=getchar(); for(;c>='0'&&c<='9';c=getchar()) i=(i<<3)+(i<<1)+c-'0'; return i*f; } int main(){ n=Read(),m=Read(); for(int i=1;i<=m;++i){ w[i]=Read(),c[i]=Read(); } for(int i=1;i<=m;++i){ for(int j=n;j>=w[i];j--){ dp[j]=max(dp[j],dp[j-w[i]]+c[i]); } } cout<<dp[n]; return 0; }