2 条题解
-
1
#include<bits/stdc++.h> using namespace std; int w[105],val[105]; int dp[105][1005]; int main(){ int t,m,res=-1; cin>>t>>m; for(int i=1;i<=m;i++){ cin>>w[i]>>val[i]; } for(int i=1;i<=m;i++) for(int j=t;j>=0;j--) { if(j>=w[i]){ dp[i][j]=max(dp[i-1][j-w[i]]+val[i],dp[i-1][j]); } else{ dp[i][j]=dp[i-1][j]; } } printf("%d",dp[m][t]); return 0; }
-
0
#include<bits/stdc++.h> using namespace std; int n,m,ans=0; int a[36],b[36]; void work(int dep,int time,int value){ if(time>n)return; if(dep>m){ ans=max(ans,value); return; } work(dep+1,time+a[dep],value+b[dep]); work(dep+1,time,value); } int main(){ cin>>n>>m; for(int i=1;i<=m;i++){ cin>>a[i]>>b[i]; } work(1,0,0); cout<<ans<<endl; return 0; }
- 1
信息
- ID
- 634
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 67
- 已通过
- 52
- 上传者