题目大意:

山洞的体积为\(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. [Xcode 实际操作]九、实用进阶-(7)使用Xcode的版本管理功能(SCM)

    目录:[Swift]Xcode实际操作 本文将演示系统的版本控制功能. 软件配置管理(SCM):Software configuration management 是指通过执行版本控制.变更控制的规程 ...

  2. IT兄弟连 JavaWeb教程 JSP语法

    在JSP页面中,脚本标识使用的最为频繁,因为他们能够方便.灵活地生成页面中的动态内容,特别是JSP程序代码块.JSP中的脚本标识包括3部分,即JSP声明区.JSP表达式和JSP程序代码块.通过这些标识 ...

  3. AutoLayout 根据文字、图片自动计算 UITableViewCell 高度

    原文网址: http://lvwenhan.com/ios/449.html 此系列文章代码仓库在 https://github.com/johnlui/AutoLayout ,有不明白的地方可以参考 ...

  4. 学习Mahout (四)

    在Mahout 学习(三)中,我贴了example的代码,里面生成向量文件的代码: InputDriver.runJob(input, directoryContainingConvertedInpu ...

  5. iOS开发 - RunLoop理解

    RunLoop概念 运行循环,一个 run loop 就是一个事件处理的循环,用来不停的调度工作以及处理事件 作用 保持程序的持续运行 监听处理App中的各种事件(触摸事件,定时器事件,selecto ...

  6. 字符串匹配,KMP算法

    KMP的详解见:https://segmentfault.com/a/1190000008575379 主要难点在于Next数组的理解,KMP是不需要回溯的匹配算法. #include<iost ...

  7. Linux (一)

    Linux目录结构 / :根目录.位于分层文件系统的最顶层,可以说它包含了所有的目录和文件 /bin :系统可执行目录 /sbin :系统管理员的可执行文件 /boot :存放用于启动linux系统的 ...

  8. 如何使用程序调用webApi接口

    如何使用程序调用webApi接口 在C#中,传统调用HTTP接口一般有两种办法: WebRequest/WebResponse组合的方法调用 WebClient类进行调用. 第一种方法抽象程度较低,使 ...

  9. Codeforces Round #397 by Kaspersky Lab and Barcelona Bootcamp (Div. 1 + Div. 2 combined) A

    Description There are literally dozens of snooker competitions held each year, and team Jinotega tri ...

  10. python开篇随记

    脚本环境,解释器处理 #!/usr/bin/env python # -*- coding:utf-8 -*- 变量 ■ 变量名只能由字母.数字和下划线组合 ■ 变量名不能以数字开头 ■ 关键字不能自 ...