洛谷 1616 疯狂的采药
代码:
#include<bits/stdc++.h>
using namespace std;
long long w[10005],val[10005],dp[10000005];
int main()
{
int t,n;
cin>>t>>n;
for(int i=1;i<=n;i++)
cin>>w[i]>>val[i];
for(int i=1;i<=n;i++)
for(int j=w[i];j<=t;j++)
dp[j]=max(dp[j],dp[j-w[i]]+val[i]);
cout<<dp[t];
return 0;
}
洛谷 P1855 榨取kkksc03
代码:
#include<bits/stdc++.h>
using namespace std;
int t1[205],m1[205],f[205][205];
int main()
{
int n,m,t;
cin>>n>>m>>t;
for(int i=1;i<=n;i++)
cin>>m1[i]>>t1[i];
for(int i=1;i<=n;i++)
for(int j=m;j>=m1[i];j--)
for(int k=t;k>=t1[i];k--)
f[j][k]=max(f[j][k],f[j-m1[i]][k-t1[i]]+1);
cout<<f[m][t];
return 0;
}
洛谷 P1507 NASA的食物计划
代码:
#include<bits/stdc++.h>
using namespace std;
int v1[405],w1[405],val[405],dp[405][405];
int main()
{
int v,w,n;
cin>>v>>w;
cin>>n;
for(int i=1;i<=n;i++)
cin>>v1[i]>>w1[i]>>val[i];
for(int i=1;i<=n;i++)
for(int j=v;j>=v1[i];j--)
for(int k=w;k>=w1[i];k--)
dp[j][k]=max(dp[j][k],dp[j-v1[i]][k-w1[i]]+val[i]);
cout<<dp[v][w];
return 0;
}
洛谷 P1910 L国的战斗之间谍
代码:
#include<bits/stdc++.h>
using namespace std;
int dp[1005][10005],m1[105],x1[105],val[105];
int main()
{
int m,x,n;
cin>>n>>m>>x;
for(int i=1;i<=n;i++)
cin>>val[i]>>m1[i]>>x1[i];
for(int i=1;i<=n;i++)
for(int j=m;j>=m1[i];j--)
for(int k=x;k>=x1[i];k--)
dp[j][k]=max(dp[j][k],dp[j-m1[i]][k-x1[i]]+val[i]);
cout<<dp[m][x];
return 0;
}
洛谷 P1164 小A点菜
代码:
#include<bits/stdc++.h>
using namespace std;
int a[10005],dp[10005];
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>a[i];
dp[0]=1;
for(int i=1;i<=n;i++)
for(int j=m;j>=a[i];j--)
dp[j]=dp[j]+dp[j-a[i]];
cout<<dp[m];
return 0;
}
一本通 1268【例9.12】完全背包问题
代码:
#include<bits/stdc++.h>
using namespace std;
int w[1005],val[1005],dp[1005];
int main()
{
int n,m;
cin>>m>>n;
for(int i=1;i<=n;i++)
cin>>w[i]>>val[i];
for(int i=1;i<=n;i++)
for(int j=w[i];j<=m;j++)
dp[j]=max(dp[j],dp[j-w[i]]+val[i]);
cout<<"max="<<dp[m];
return 0;
}