hpuoj 1720: 感恩节KK专场——面试难题 【贪心】【校赛】
2015-11-29 21:32
344 查看
1720: 感恩节KK专场——面试难题
时间限制: 1 Sec 内存限制: 128 MB提交: 299 解决: 42
[提交][状态][讨论版]
题目描述
有n个人要来面试学生会XX部门,要求面试过程中任意两个面试者之间的时间不能有重叠。已知n个面试者到来的时间和需要面试的时间,问最多可以面试多少个人。该部门的XX是KK的好友,现在他来找KK帮忙。但是KK很忙,请你帮帮KK吧。时间重叠如[1, 3] [2, 4]或者[1, 3][3, 4]。
输入
给定一个整数t,表示有t(t<=100)组测试数据。每组测试数据有一个整数n(0<=n<=1000),接下来每行有两个整数S[i],T[i],表示第i个面试到来的时间和需要面试的时间。输出
每行输出一个整数,表示最多可以面试的人数。样例输入
1 1 1 0
样例输出
1
提示
来源
KK思路:
将结束的时间从小到大进行排序,然后进行判断是否能够面试,也就是开始的时间是否在前面的那个人结束的时间之后,如果在那个人之后,那么他就可以进行面试,如果没有,他就不能进行面试!
代码:
#include <stdio.h> #include <string.h> #include <algorithm> using namespace std; int n; struct node { int t1,t2; }a[1005]; int cmp(node a,node b) { if(a.t2==b.t2) return a.t1>b.t1; return a.t2<b.t2; } int main() { int T; scanf("%d",&T); while(T--) { scanf("%d",&n); if(n==0) { printf("0\n"); continue; } for(int i=1;i<=n;i++) { scanf("%d%d",&a[i].t1,&a[i].t2); a[i].t2+=a[i].t1; } sort(a+1,a+n+1,cmp); int sum=1; int t=a[1].t2; for(int i=2;i<=n;i++) { if(t<a[i].t1) { sum++; t=a[i].t2; } } printf("%d\n",sum); } return 0; }
相关文章推荐
- 黑马程序员——OC学习——self和super关键字
- 黑马程序员——基础笔记:程序解释—注释
- 黑马程序员——javaSE_反射
- hpuoj--校赛--面试难题(区间相交问题)
- hpuoj--校赛--面试难题(区间相交问题)
- 理想的程序员
- 黑马程序员——Java基础---IO流
- 《JAVA 程序员面试宝典(第四版)》之传递与引用篇
- 黑马程序员——Java基础---内部类
- 黑马程序员——Java基础---线程
- 黑马程序员——Java基础---访问修饰符
- 黑马程序员——Java基础---有关static(静态)的知识
- 黑马程序员——Java基础---递归
- 黑马程序员——Java基础---单例
- 黑马程序员——Java基础---面向对象之抽象
- 黑马程序员——Java基础---面向对象之多态
- 面试题16:反转链表
- 前端笔试面试中的常用知识点总结(CSS)
- 扬州工业职业技术学院
- 五百强各大行业简介+面试流程+tips