题目大意:

山洞的体积为\(v\)

第\(i\)个物品放在山洞里会占据\(a_i\)的空间,在搬运过程中至少需要\(b_i\)的空间

问能不能把所有物品都放下

贪心题.比较难看出贪心,但是从无顺序要求中可以看出这是个贪心.

仍然考虑两个人.(贪心的基本操作)

如果不知道为什么考虑两个人可以参考我的另外两篇有关贪心交换的好题:国王游戏

皇后游戏

设第一个人的占据空间为\(a_1\),需要空间为\(b_1\)

然后就可以乱搞分析.

仍然的.

所用的空间.

max(max(b_1,a_1+b_2),max(b_2,a_2+b_1))是不能排在第一位的

首先\(b_1,b_2\)是不可能作为答案的.

\(a_1+b_2 a_2+b_1\)

两边同时减去\(b_1+b_2\)

成了

\(a_1-b_1,a_2-b1\)

如果\(a_1-b_1 > a_2-b1\)就让第一个人排在第一个位置.

反之同理.

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <algorithm>
  4. const int maxN = 1000 + 7;
  5. struct Node{
  6. int a,b;
  7. }Q[maxN];
  8. int T,n,V;
  9. bool operator < (const Node &a,const Node &p) {
  10. return a.a - a.b < p.a - p.b;
  11. }
  12. bool cmp(int sum,int id) {
  13. if(sum + Q[id].b > V) return false;
  14. return true;
  15. }
  16. int main() {
  17. scanf("%d",&T);
  18. while(T --) {
  19. scanf("%d%d",&V,&n);
  20. for(int i = 1;i <= n;++ i)
  21. scanf("%d%d",&Q[i].a,&Q[i].b);
  22. std::sort(Q + 1,Q + n + 1);
  23. int sum = 0;
  24. bool flag = true;
  25. for(int i = 1;i <= n;++ i) {
  26. if(cmp(sum,i)) sum += Q[i].a;
  27. else {
  28. flag = false;
  29. break;
  30. }
  31. }
  32. flag ? puts("Yes") : puts("No");
  33. }
  34. return 0;
  35. }

Hdu 3177 (贪心)的更多相关文章

  1. hdu 3177贪心

    #include<stdio.h>/*只能按这种形式排序单纯一种形式是不对的,按ai排序 20 2 1 1 10 20 按bi排序 20 2 5 17 1 16 都是不对的 二a.u+b. ...

  2. HDU 3177 Crixalis's Equipment (贪心,差值)

    题意:判断 n 件物品是否可以搬进洞里,每件物品有实际体积A和移动时的额外体积 B . 析:第一反应就是贪心,一想是不是按B从大到小,然后一想,不对,比如体积是20,第一个 是A=11, B=19.第 ...

  3. HDU 3177 Crixalis&#39;s Equipment(贪婪)

    主题链接:http://acm.hdu.edu.cn/showproblem.php? pid=3177 Problem Description Crixalis - Sand King used t ...

  4. 【hdu 3177 Crixalis's Equipment】 题解

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3177 \(describe\): 有一个山洞,山洞的容积最大为\(v\).现在你有\(n\)个物品,这 ...

  5. Hdu 5289-Assignment 贪心,ST表

    题目: http://acm.hdu.edu.cn/showproblem.php?pid=5289 Assignment Time Limit: 4000/2000 MS (Java/Others) ...

  6. Hdu 3177 Crixalis's Equipment

    Crixalis's Equipment Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  7. hdu 4803 贪心/思维题

    http://acm.hdu.edu.cn/showproblem.php?pid=4803 话说C++还卡精度么?  G++  AC  C++ WA 我自己的贪心策略错了 -- 就是尽量下键,然后上 ...

  8. hdu 1735(贪心) 统计字数

    戳我穿越:http://acm.hdu.edu.cn/showproblem.php?pid=1735 对于贪心,二分,枚举等基础一定要掌握的很牢,要一步一个脚印走踏实 这是道贪心的题目,要有贪心的意 ...

  9. hdu 4974 贪心

    http://acm.hdu.edu.cn/showproblem.php?pid=4974 n个人进行选秀,有一个人做裁判,每次有两人进行对决,裁判可以选择为两人打分,可以同时加上1分,或者单独为一 ...

随机推荐

  1. Oracle GoldenGate对接 Oracle 11g和Kafka

    本文主要是向读者介绍如何通过 ogg 为 oracle 数据库的变更操作实时同步到大数据产品 kafka 上. 开始介绍前,先为读者介绍一下环境背景 机器ip 和其对应的服务 192.168.88.1 ...

  2. 部署spark 1.3.1 standalong模式

    之前已经写过很多次部署spark 的博客,但是之前部署都是照瓢画葫芦,不得其中的细节,并且以前都是部署spark on yarn 部署环境 scala 2.10.2,jdk 1.6,spark 版本1 ...

  3. ADO学途 three day

    1· 程序的根本----数据 一个程序是用来处理数据算法的具体表现,可以说没有数据,程序就没有意义.今天主 要分享在一个程序中数据的支持者SQL server的建立和使用.首先当然不可缺少SQL se ...

  4. jmeter beanshell处理请求响应结果时Unicode编码转为中文

    在Test Plan下创建一个后置BeanShell PostProcessor,粘贴如下代码即可: String s=new String(prev.getResponseData()," ...

  5. numpy使用示例

    numpy介绍 创建numpy的数 一维数组是什么样子 可以理解为格子纸的一行就是一个一维数据 two_arr = np.array([1, 2, 3]) 二维数组什么样子 理解为一张格子纸, 多个一 ...

  6. [软件工程基础]2017.10.27 第二次 Scrum 会议

    决议 周六前项目交接 Milestone 完成 周六集体开发 游心整理物理网站上的实验流程和绪论复习题 石奇川上线静态版实验流程和绪论复习题库 李煦通构思后端如何实现绪论题库,包括和用户记录的关联方式 ...

  7. Codeforces Round #202 (Div. 1) A. Mafia 推公式 + 二分答案

    http://codeforces.com/problemset/problem/348/A A. Mafia time limit per test 2 seconds memory limit p ...

  8. MDX查询语句

    另:15个经典的MDX查询语句 另:http://www.cnblogs.com/biwork/p/3437959.html 1.排名+排序+量值过滤: WITH member [Measures]. ...

  9. Storm编程入门API系列之Storm的Topology多个Workers数目控制实现

    前期博客 Storm编程入门API系列之Storm的Topology默认Workers.默认executors和默认tasks数目 继续编写 StormTopologyMoreWorker.java ...

  10. jQuery取得/设置select的值

    本来以为jQuery("#select1").val();是取得选中的值, 那么jQuery("#select1").text();就是取得的文本. 这是不正确 ...