标签:
2 10 10 15 10 5 10 5 3 10 5 10 5 3 5 6 2 7 3
5 11
1 #include <bits/stdc++.h> 2 using namespace std; 3 const int maxn = 505; 4 int N,M,dp[5010]; 5 struct node{ 6 int P,Q,V; 7 bool operator<(const node &t) const{ 8 return Q - P < t.Q - t.P; 9 } 10 }d[maxn]; 11 int main() { 12 while(~scanf("%d %d",&N,&M)) { 13 memset(dp,0,sizeof dp); 14 for(int i = 0; i < N; ++i) 15 scanf("%d %d %d",&d[i].P,&d[i].Q,&d[i].V); 16 sort(d,d+N); 17 for(int i = 0; i < N; ++i) { 18 for(int j = M; j >= d[i].Q ; --j) 19 dp[j] = max(dp[j],dp[j - d[i].P] + d[i].V); 20 } 21 printf("%d\n",dp[M]); 22 } 23 return 0; 24 } 25 /* 26 3 10 27 5 10 5 28 2 7 3 29 3 5 6 30 */
标签:
原文地址:http://www.cnblogs.com/crackpotisback/p/4417974.html