题目大意:有n(n≤105)(n\leq 10^5)个货物,分为两种,一种占空间1,一种占空间为2,每个货物都有一定的价值,有大小为v(v≤109)(v\leq 10^9)的背包,如何装能够使得价值最大。

题解:该题的特殊性在于两种货物所占空间分别为1和2,背包中最终可能会填满或余1的位置。以平均价格为关键字排序,再贪心地取。如果正好装满就结束,如果还差一个位置填满,需要尝试把前面的1类型货物换成2类型货物或者在后面找一个1类型货物。

#include <bits/stdc++.h>using namespace std;const int maxn = 100010;struct node{int t,p;int id;bool operator<(const node &a) const {return (1.0*p/t)>(1.0*a.p/a.t);}
}a[maxn];int w[maxn];int main(){int n,v;scanf("%d%d",&n,&v);for(int i = 0;i < n;i++){scanf("%d%d",&a[i].t,&a[i].p);a[i].id = i+1;}sort(a,a+n);//for(int i = 0;i < n;i++){//    printf("i=%d %d %d\n",a[i].id,a[i].t,a[i].p);//}int last = -1;int lp = -1;int ans = 0;int cnt = 0;for(int i = 0;i < n&&v;i++){if(v == 1&&a[i].t == 2){if(last != -1){int tt = 0,j;for(j = i+1;j < n;j++){if(a[j].t == 1){tt = a[j].p;break;}}if(last + tt> a[i].p){w[cnt++] = a[j].id;ans += tt;v--;}else if(a[i].p > last){w[lp] = -1;w[cnt++] = a[i].id;ans += a[i].p-last;v--;}}continue;}if(a[i].t == 1){last = a[i].p;lp = cnt;}w[cnt++] = a[i].id;ans += a[i].p;v -= a[i].t;}printf("%d\n",ans);for(int i = 0;i < cnt;i++){if(w[i] != -1) printf("%d%s",w[i],i == cnt-1?"\n":" ");}return 0;
}

CF 3B Lorry相关推荐

  1. CF 3B. Lorry

    CF 3B. Lorry   点击打开链接 题意:有体积为1或2的物品共n种 你的容量为m,求你最多可以拿到多少价值的物品. 思路:贪心的思维 再加上尺取法求得最大的价值,这是我看大佬的博客才写出来的 ...

  2. 【CF】3B Lorry

    这道题目网上有几个题解,均有问题.其实就是简单的贪心+排序,没必要做的那么复杂. 一旦tot+curv > v时,显然curv==2, 有三种可能: (1)取出最小的curv==1的pp,装入当 ...

  3. CodeForces 3B Lorry 贪心

    题目大意是有体积为v的背包,有体积为1和2的两种物品若干,这些物品都有各自的价值.求如何取这些物品可使背包中物品的价值最大. 开始一看到是背包就傻眼了==因为数据量太大1 ≤ n ≤ 105; 1 ≤ ...

  4. CodeForces 3-B Lorry

    #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #i ...

  5. codeforce 3B lorry (贪心)

    有货车运量V: 有若干物品A 占2单位体积,有若干物品B占1单位体积: 相同种类的物品价值不一定一样: 序号按照输入顺序而定: 问货车可以拉走最多多少价值的物品,并输出所选物品的序号: 思路:贪心,先 ...

  6. codeforce 3B. Lorry(贪心)

    题目:http://codeforces.com/problemset/problem/3/B 大意是,给定N和V,在给出N个vehicle的类型号(1或2)和各自的载重量,求在不超过V的情况下最大的 ...

  7. Android资源分离,可分离Android操作系统报告:硬件环境检测文件(十)(分析)...

    可分离Android操作系统报告:硬件环境检测文件(十)(分析) (2018-04-18 12:23:58) 标签: it 0x38000-终  1F E0 8E 05 60 29 1C ED A8 ...

  8. Delphi - 注入的方式来禁止任务管理器

    转载一个单元,不过有时候会蓝屏的,因为它这个Dll应该还有点儿问题吧. unit Fuck_CAD_Unit; interface uses Windows, TLHelp32,SysUtils; c ...

  9. RSA 非对称加密算法简述

    RSA概述 首先看这个加密算法的命名.很有意思,它其实是三个人的名字.早在1977年由麻省理工学院的三位数学家Rivest.Shamir 和 Adleman一起提出了这个加密算法,并且用他们三个人姓氏 ...

最新文章

  1. Linux修改hostname(临时或者永久)
  2. 搜狗拼音输入法的安装和基本使用
  3. java map 查找_在Java TreeMap中查找元素位置
  4. 第二章:Android游戏开发之前台渲染
  5. js 异步操作打开新页面被浏览器拦截的问题
  6. 网络营销教程—SEO 第八章 内部链接的优化操作
  7. 06 事件处理函数绑定与事件对象
  8. 《DOS命令全集(中英文对照)》CHM版.CHM
  9. C和指针之用拉托斯特尼筛方法(Eratosthenes)查找区间质素个数
  10. 定义加密函数程序python_一个python自定义的加密解密函数
  11. 调用restful接口_SSM实现RESTFul风格的CURD操作
  12. 今日写代码遇到的https请求的时候,提示ssl证书错误
  13. 《UTF-8与GB2312之间的互换》的改进
  14. AJAX 跨域调用和 Java 跨域 发送请求
  15. 微信小程序 人脸识别登陆模块
  16. 软件篇 之 Mac 安装 PS 19.1.8 并破解。。。
  17. 服务器2003系统无故重启,2003服务器自动重启
  18. Calc3: Partial Derivative
  19. js学到什么程度学框架_如何学到什么
  20. 【CF 520D】Cubes

热门文章

  1. 一文了解 AI 商品模型训练平台
  2. 警惕!Python 中少为人知的 10 个安全陷阱!
  3. DC-5靶机渗透测试详细教程
  4. python爬虫(以简书为例)
  5. Linux系统下如何创建任意大小的测试文件
  6. 世界上最远的距离-泰戈尔
  7. 湖北省小型微型企业创业创新示范基地奖励汇编(2022各地政策补贴及申报条件)
  8. 固定电话+手机号码 正则表达式
  9. Servlet 发送电子邮件
  10. 深度原创丨揭开工业互联网看不见的手:从MindSphere+Mendix谈起