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

10月6号 卡车

时间:2018-10-06 17:08:32      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:技术分享   color   div   ++   algorithm   dmi   pre   cst   algo   

题目

技术分享图片

  分析

   第一眼看去,,很明显的背包问题。

    但看看数据规模,于是就想到了贪心,算出性价比,排序

    有一个关键点要注意

    题目的容积只有1和2

    所以当容积是双数时,一定能装完

    但单数时呢??   

    比如  

    3 3

    1 7

    2 14

    1 9

    排序后贪心一个个加后发现会容积无法达到0

    所以为了排除这种情况

    在排序是要优先排列 容积为 2 的

 

  代码

   

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstdio>
 4 using namespace std;
 5 struct sb
 6 {
 7     int a,b;
 8     double c;
 9 }a[100001];
10 bool cmp(sb a,sb b)
11 {
12     if (a.c==b.c) return a.a>b.a?true:false;
13     return a.c>b.c?true:false;
14 }
15 int read()
16 {
17     int x=0;
18     int c=getchar();
19     while (c>=0&&c<=9)
20     {
21         x=x*10+c-48;
22         c=getchar();
23     }
24     return x;
25 }
26 int main ()
27 {
28     int n,v;
29     n=read(); v=read();
30     for (int i=1;i<=n;i++)
31     {
32         a[i].a=read();
33         a[i].b=read();
34         a[i].c=a[i].b/a[i].a;
35     }
36     sort(a+1,a+1+n,cmp);
37     int ans=0;
38     int j=1;
39     while(v!=0&&j<=n)
40     {
41         if (v>=a[j].a)
42         {
43             ans+=a[j].b;
44             v-=a[j].a;
45         }
46         j++;
47     }
48     cout<<ans;
49 }

 

10月6号 卡车

标签:技术分享   color   div   ++   algorithm   dmi   pre   cst   algo   

原文地址:https://www.cnblogs.com/zjzjzj/p/9747738.html

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