题意:有n个工作,已知每个工作的开始时间和结束时间,问最多能完成多少工作。

思路:贪心。要想使得最后的结果最佳,那么开始的晚的,要在最后来做。在此基础上,需要保证先做开始的早的(需要用优先队列来维护)。

code:

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <sstream>
#include <string>
#include <vector>
#include <list>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <bitset>using namespace std;typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;const int INF=0x3fffffff;
const int inf=-INF;
const int N=800010;
const int M=100;
const int mod=1000000007;
const double pi=acos(-1.0);#define cls(x,c) memset(x,c,sizeof(x))
#define fr(i,s,n) for (int i=s;i<=n;i++)struct node
{int q,d;
}v[N];
bool cmp(node a,node b)
{return a.d<b.d;
}
int n;
int sol()
{priority_queue<int>qu;int t=0;fr(i,1,n){if (t+v[i].q<=v[i].d){qu.push(v[i].q);t+=v[i].q;}else if (!qu.empty()){int tp=qu.top();if (tp>v[i].q){qu.pop();t=t-tp+v[i].q;qu.push(v[i].q);}}}return qu.size();
}
int main()
{int T;scanf("%d",&T);while (T--){scanf("%d",&n);fr(i,1,n) scanf("%d %d",&v[i].q,&v[i].d);sort(v+1,v+n+1,cmp);printf("%d\n",sol());if (T) puts("");}
}

uva 1153—— Keep the Customer Satisfied相关推荐

  1. UVa 1153 Keep the Customer Satisfied 【贪心 优先队列】

    题意:给出n个工作,已知每个工作需要的时间last,以及截止时间end,(必须在截止时间之前完成)问最多能够完成多少个工作 首先预处理,将这n件任务按照截止时间从小到大排序 然后用一个cur记录当前做 ...

  2. UVa1153 Keep The Customer Satisfied(贪心)

    问题:有 n个订单,每个订单有两个属性,数量 q吨和交付时间d,其中每生产一吨铁需要1个单位时间.要求拒绝的订单数最少. 思路:对于两个订单(qa,da),(qb,db),如果qa>qb,da& ...

  3. LA 3507 Keep the Customer Satisfied (Greedy)

    https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...

  4. Keep the Customer Satisfied

    题意: n个订单,每个订单有完成需要的天数,和限制的天数,求最多能完成多少订单 分析: 先按限制日期升序排列,若当前订单不能完成,和上面已选中的订单中需要天数中最大的比较,若比它小,则替换他. #in ...

  5. POJ 2786 Keep the Customer Satisfied 贪心

    这题刚开始想成了背包的问题,,后来一直WA,,不知道为什么,然后想了一下这题使用背包时间复杂度也过不去,所以还是要用贪心 首先这里构建一个优先队列来存储当前决定要接受的订单中的轮子个数,对于最后期限从 ...

  6. 【POJ】2786-Keep the Customer Satisfied(贪心 + 优先队列,姿势不对就要跪)

    按照截止日期排序,之后一个一个遍历,记录当前时间,如果当前时间大于截止时间,那么从选过的任务里删除一个花费最大的任务 优先队列维护 14038525 201301052100 2786 Accepte ...

  7. 紫书《算法竞赛入门经典》

    紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...

  8. 训练指南第一部分解题报告

    主要是提供训练指南第一部分解题报告链接,后面会持续更新中 307 - Sticks  (DFS+剪枝) 11292 - Dragon of Loowater (贪心) 11729 - Commando ...

  9. 《题目与解读》红书 训练笔记目录《ACM国际大学生程序设计竞赛题目与解读》

    虽然2012年出版的老书了,但是是由三次世界冠军的上海交大ACM队出版的书籍,选择的题目是ACM经典中的经典,书中有非常详细的题解,可以学到很多东西,值得一刷. 目录 第一部分 第一章 数学 1.1 ...

最新文章

  1. CrazyWing:Python自动化运维开发实战 四、Python变量
  2. 教你怎么修改个性开机画面
  3. Boost:cpu时间的实例
  4. boost标准库开发环境搭建boost标准库环境搭建以及简单案例介绍
  5. 关于libtorrent库的安装
  6. flask ajax 文件上传,使用ajax上传Python flask文件请求.files空的
  7. Json对象直接存取数据库
  8. 坚决反对“企业文学化”
  9. 学习笔记: yield迭代器
  10. (十八)其他数据库对象,视图,序列
  11. C语言用冒泡法对数组元素降序,冒泡法排序c语言
  12. linux安装过程中的硬盘分区工具是,Linux硬盘分区管理工具
  13. 数仓建模—主数据管理
  14. .mat转.tif 用于arcgis裁剪遥感图像
  15. autohold有什么弊端吗_autohold一直开着伤车吗
  16. 俩种方式找出Excel中相同和不同的数据
  17. delhpi 身份证校验
  18. 用style标签的background-image属性 改变图片大小
  19. 碳足迹软件市场现状研究分析-
  20. Verilog基础知识总结02

热门文章

  1. canvas离屏技术与放大镜实现
  2. Zabbix监控多个JVM进程
  3. html适配Anroid手机
  4. ADS-B显示终端5.9
  5. jquery全选,jquery全不选,jquery反选
  6. Linux中的Ramdisk和Initrd
  7. python填表_小Python填表得到d
  8. android 基础应用程序,android应用程序基本实现(基础篇).ppt
  9. Ubuntu镜像下载地址
  10. 1688比赛中的配对次数