洛谷 P2430 严酷的训练

题目传送门

解题思路:

一道题目描述特别繁琐的01背包

AC代码:

 1 #include<iostream> 
 2 #include<cstdio>
 3 
 4 using namespace std;
 5 
 6 int v1,v2,ti,m,n,w[5001],_time,f[5002];
 7 struct kkk{
 8     int id,v;
 9 }e[5001];
10 
11 int main() {
12     scanf("%d%d",&v1,&v2);
13     ti = v2 / v1;
14     scanf("%d%d",&m,&n);
15     for(int i = 1;i <= n; i++) {
16         scanf("%d",&w[i]);
17         w[i] *= ti;
18     }
19     for(int i = 1;i <= m; i++)
20         scanf("%d%d",&e[i].id,&e[i].v);
21     scanf("%d",&_time);
22     for(int i = 1;i <= m; i++)
23         for(int j = _time;j >= w[e[i].id]; j--)
24             f[j] = max(f[j],f[j-w[e[i].id]] + e[i].v);
25     printf("%d",f[_time]);
26     return 0;
27 }

 

猜你喜欢

转载自www.cnblogs.com/lipeiyi520/p/11986280.html