求助,样例没过,最普通的完全背包

P2722 [USACO3.1] 总分 Score Inflation

qwq
by fxygr2333_IAKIOI @ 2023-02-22 18:26:30


$O(nm)$ 数组会炸 完全背包正解两重循环,时间会炸
by Mathew_Miao @ 2023-02-22 18:35:14


空间用滚动数组 ```cpp #include <iostream> #define ll long long #define maxn 10005 using namespace std; int w[maxn],c[maxn]; int f[maxn]; int main(){ int n,m; 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=c[i];j<=m;j++){ f[j]=max(f[j],f[j-c[i]]+w[i]); } } cout << f[m]; } ```
by Mathew_Miao @ 2023-02-22 18:37:13


@[icaijy](/user/378195) 可以这样简化改进^-^ ```cpp #include<bits/stdc++.h> using namesapce std; int main() { long long dp[1001]; cin>>t>>m; for(int i=1;i<=m;i++) { cin>>w[i]>>v[i]; } //枚举可选择物品(i) for(int i=1;i<=m;i++) { //枚举背包容量(j) for(int j=t;j>=0;j--) { if(w[i]<=j) { //不选择,选择 做对比 dp[j]=max(dp[j],dp[j-w[i]]+v[i]); } else { dp[j]=dp[j]; } } } cout<<dp[t]; return 0; } ``` //12岁小孩,别介意……
by Danna2012 @ 2024-03-07 20:53:50


|