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

P1776 宝物筛选_NOI导刊2010提高(02)(背包的二进制优化)

时间:2017-07-17 23:47:06      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:接下来   ios   表示   struct   node   main   blog   输出   ima   

题目描述

终于,破解了千年的难题。小FF找到了王室的宝物室,里面堆满了无数价值连城的宝物……这下小FF可发财了,嘎嘎。但是这里的宝物实在是太多了,小FF的采集车似乎装不下那么多宝物。看来小FF只能含泪舍弃其中的一部分宝物了……小FF对洞穴里的宝物进行了整理,他发现每样宝物都有一件或者多件。他粗略估算了下每样宝物的价值,之后开始了宝物筛选工作:小FF有一个最大载重为W的采集车,洞穴里总共有n种宝物,每种宝物的价值为v[i],重量为w[i],每种宝物有m[i]件。小FF希望在采集车不超载的前提下,选择一些宝物装进采集车,使得它们的价值和最大。

输入输出格式

输入格式:

 

第一行为一个整数N和w,分别表示宝物种数和采集车的最大载重。

接下来n行每行三个整数,其中第i行第一个数表示第i类品价值,第二个整数表示一件该类物品的重量,第三个整数为该类物品数量。

 

输出格式:

 

输出仅一个整数ans,表示在采集车不超载的情况下收集的宝物的最大价值。

 

输入输出样例

输入样例#1:
  4 20
  3 9 3
  5 9 1
  9 4 2
  8 1 3
输出样例#1:
  47

说明

对于30%的数据:n≤∑m[i]≤10^4;0≤W≤10^3。

对于100%的数据:n≤∑m[i]≤10^5;

0 <w≤4*10^4:1≤n<100。

技术分享

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<algorithm>
 6 #define lli long long int 
 7 using namespace std;
 8 const int MAXN=100001;
 9 const int maxn=0x3f;
10 void read(int &n)
11 {
12     char c=+;int x=0;bool flag=0;
13     while(c<0||c>9){c=getchar();if(c==-)flag=1;}
14     while(c>=0&&c<=9)
15     x=(x<<1)+(x<<3)+c-48,c=getchar();
16     flag==1?n=-x:n=x;
17 }
18 int n,m;
19 struct node
20 {
21     int va,we,num;
22 }a[MAXN];
23 int dp[MAXN];
24 int  main()
25 {
26     read(n);read(m);
27     for(int i=1;i<=n;i++)
28     {
29         read(a[i].va);
30         read(a[i].we);
31         read(a[i].num);
32     }
33     for(int i=1;i<=n;i++)
34     {
35         int left=(a[i].num);
36         for(int k=1;left;k<<=1)
37         {
38             if(k>left)
39                 k=left;
40             left-=k;
41             int w=a[i].we*k;
42             int v=a[i].va*k;
43             for(int j=m;j>=w;j--)
44                 dp[j]=max(dp[j],dp[j-w]+v);
45         }
46     }
47     printf("%d",dp[m]);
48     return 0;
49 }

 

P1776 宝物筛选_NOI导刊2010提高(02)(背包的二进制优化)

标签:接下来   ios   表示   struct   node   main   blog   输出   ima   

原文地址:http://www.cnblogs.com/zwfymqz/p/7197466.html

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