1 条题解
-
0
C :
#include <stdio.h> #include <string.h> #define max(x,y) (x>y)?x:y int main () { int T,M,a,b; scanf("%d %d",&T,&M); int i,j; int dp[M+1][T+1]; memset(dp,0,sizeof(dp)); for(i=1;i<=M;i++) { scanf("%d %d",&a,&b); for(j=1;j<=T;j++) { if(j>=a) dp[i][j]=max(dp[i-1][j],dp[i-1][j-a]+b); else dp[i][j]=dp[i-1][j]; } } printf("%d",dp[M][T]); return 0; }
C++ :
#include<bits/stdc++.h> using namespace std; int T,M,t[101],v[101],tv[1000001]; int main(){ int i,j; cin>>T>>M; for(i=1;i<=M;i++){ cin>>t[i]>>v[i]; } for(i=1;i<=M;i++){ for(j=T;j>=t[i];j--){ tv[j] = max(tv[j],tv[j-t[i]]+v[i]); } } cout<<tv[T]; return 0; }
- 1
信息
- ID
- 2634
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者