模板来源:codevs 5429

根据背包问题的相关状态转移方程,我们不难写出朴素的算法

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <algorithm>
 5 using namespace std;
 6 inline int read() {
 7     int ret=0;
 8     int op=1;
 9     char c=getchar();
10     while(c<'0'||c>'9') {if(c=='-') op=-1; c=getchar();}
11     while(c<='9'&&c>='0') ret=ret*10+c-'0',c=getchar();
12     return ret*op;
13 }
14 int n,m;
15 int c[7010],v[7010],num[7010];
16 int f[7010];
17 int main() {
18     n=read(); m=read();
19     for(int i=1;i<=n;i++) {
20         c[i]=read(); v[i]=read(); num[i]=read();
21     }
22     for(int i=1;i<=n;i++)
23         for(int j=m;j>=c[i];j--)
24             for(int k=0;k<=num[i];k++)
25                 if(j-c[i]*k>=0)
26                     f[j]=max(f[j],f[j-c[i]*k]+v[i]*k);
27     printf("%d\n",f[m]);
28     return 0;
29 }
TLE Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-09-03
  • 2021-11-25
  • 2022-12-23
  • 2021-06-17
  • 2021-08-07
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-23
  • 2022-12-23
相关资源
相似解决方案