码迷,mamicode.com
首页 > 其他好文 > 详细

[usaco3.1.2]inflate

时间:2015-12-01 00:12:24      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:

  一开始想把他们分成一件件来做01背包(是在下输了),然后发现直接来一个完全背包就可以了(严重打击自信心),然后再来一个大牛的实用优化(但貌似我写得很拙),看来我还是太年轻了。

 1 /*
 2 ID:abc31261
 3 LANG:C++
 4 TASK:inflate 
 5 */
 6 #include<cstdio>
 7 #include<cstring>
 8 #include<iostream>
 9 using namespace std;
10 const int maxn=11111;
11 long long w[maxn],v[maxn],f[maxn];
12 int main()
13 {
14     int maxw=0,minv=0x7f,i,j,n,m,l,len=0;
15     freopen("inflate.in","r",stdin);
16     freopen("inflate.out","w",stdout);
17     scanf("%d%d",&n,&m);
18     for (i=1;i<=m;i++)
19     {
20         ++len;
21         scanf("%d%d",&w[len],&v[len]);
22         if (w[len]>maxw && v[len]<minv){ maxw=w[len]; minv=v[len];}
23            else if (w[len]<=maxw && v[len]>=minv)len--;
24     }
25     memset(f,0,sizeof(f));
26     for (i=1;i<=len;i++)
27         for (j=v[i];j<=n;j++)f[j]=max(f[j],f[j-v[i]]+w[i]);
28     printf("%d\n",f[n]);
29     return 0;
30 }

 

[usaco3.1.2]inflate

标签:

原文地址:http://www.cnblogs.com/Sun-Sea/p/5008760.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!