10分祭

P1048 [NOIP2005 普及组] 采药

@[Dpf20120621](/user/922781) 你的解法不是这道题最优方案,题目标签是背包
by xq_z @ 2024-01-06 14:08:59


仅供参考 ```cpp #include<bits/stdc++.h> using namespace std; int T,M,t[105],m[105],ans=0,a[10005][10005]; int f[10005][10005]; int main(){ cin>>T>>M; for(int i=1;i<=M;i++) cin>>t[i]>>m[i]; for(int i=1;i<=M;i++){ for(int j=0;j<=T;j++){ if(j>=t[i]){ f[i][j]=max(f[i-1][j],f[i-1][j-t[i]]+m[i]); } else{ f[i][j]=f[i-1][j]; } } } cout<<f[M][T]; return 0; } ```
by xq_z @ 2024-01-06 14:09:32


@[xq_z](/user/611614) 你不排序能行吗?
by Dpf20120621 @ 2024-01-06 14:21:49


仅供参考```c #include<iostream> #include<cmath> #include<stack> #include<queue> #include<vector> #include<string> #include<cstring> #include<cstdio> #include<iomanip> #include<algorithm> #include<fstream> #include<map> #include<set> #include<stdio.h> using namespace std; int dp[1000]; int main() { int t,m; cin>>t>>m; int a,b; for(int i=1;i<=m;i++) { cin>>a>>b; for(int j=t;j>=0;j--) { if(j>=a) dp[j]=max(dp[j],dp[j-a]+b); } } cout<<dp[t]; return 0; } ```
by liangyiwen123 @ 2024-01-25 12:03:00


```c #include<iostream> #include<cmath> #include<stack> #include<queue> #include<vector> #include<string> #include<cstring> #include<cstdio> #include<iomanip> #include<algorithm> #include<fstream> #include<map> #include<set> #include<stdio.h> using namespace std; int dp[1000]; int main() { int t,m; cin>>t>>m; int a,b; for(int i=1;i<=m;i++) { cin>>a>>b; for(int j=t;j>=0;j--) { if(j>=a) dp[j]=max(dp[j],dp[j-a]+b); } } cout<<dp[t]; return 0; } ```
by liangyiwen123 @ 2024-01-25 12:03:31


@[Dpf20120621](/user/922781) 我的 ``` #include<iostream> using namespace std; const int maxn=1005; int n,m; int f[maxn][maxn],cost[maxn],val[maxn]; int ans=0; double sum=0; int main() { cin>>m>>n; for(int i=1;i<=n;i++) cin>>cost[i]>>val[i]; for(int i=1;i<=n;i++) for(int j=0;j<=m;j++) { f[i][j]=0; if(j>=cost[i]) { f[i][j]=max(f[i-1][j],f[i-1][j-cost[i]]+val[i]); } else f[i][j]=f[i-1][j]; } for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) ans=max(ans,f[i][j]); sum=sum+ans; cout<<sum<<endl; } ```
by lrb20120825 @ 2024-01-26 09:25:22


仅供参考```c#include<bits/stdc++.h> using namespace std; int n,m,w,v,dp[10000007]; int main() { cin >> m >> n; for(int i = 1;i <= n;i++) { cin >> w >> v; for(int j = m;j >= w;j--) { dp[j] = max(dp[j],dp[j - w] + v); } } cout << dp[m]; return 0; }
by _lixichen_ @ 2024-01-31 14:12:24


@[liangyiwen123](/user/1053191) 万能头推销员已上线
by yinjiayu @ 2024-02-15 09:49:07


@[yinjiayu](/user/1129067) ?用万能头吗?我不是很喜欢,谢谢。不过我那么多的头文件其实都是每次打代码都复制粘贴好了的。
by liangyiwen123 @ 2024-04-06 16:48:53


|