2 条题解
-
1
jcx106 LV 3 @ 2025-12-06 12:34:40
很显然这是一道模版题,直接实现01背包即可:
#include<bits/stdc++.h> using namespace std; int m,n,w[20005],c[20005]; int dp[20005][20005]; int main(){ cin>>m>>n; for(int i=1;i<=n;i++) cin>>w[i]>>c[i]; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(j<w[i]) dp[i][j]=dp[i-1][j]; else dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+c[i]); cout<<dp[n][m]; } -
0@ 2021-02-06 21:28:07
本题是0/1背包
价值v要乘上重量w
开long long!数组要大!
我关于0/1背包的讲解:【精讲】DP经典问题——0/1背包问题#include<cstdio> using namespace std; int n,t,w,v,f[1001]; int max(int x,int y){ if(x>y)return x; else return y; } int main(){ scanf("%d%d",&n,&t); for(int i=1;i<=t;i++) { scanf("%d%d",&w,&v); for(int j=n;j>=w;j--) f[j]=max(f[j],f[j-w]+v); } printf("%d",f[n]); }
- 1
信息
- 难度
- 5
- 分类
- (无)
- 标签
- 递交数
- 51
- 已通过
- 20
- 通过率
- 39%
- 被复制
- 1
- 上传者