【贪心】监测点
2016-07-19 23:07
316 查看
问题 Y: 【贪心】监测点
时间限制: 1 Sec 内存限制: 64 MB提交: 25 解决: 10
[提交][状态][讨论版]
题目描述
“多么希望有一天突然惊醒,发现自己是在小学的一节课上睡着了,现在经历的一切都是一场梦,桌上满是你的口水。你告诉同桌,说做了一个好长好长的梦。同桌骂你白痴,叫你好好听课。你看着窗外的球场,一切都那么熟悉,一切还充满希望……”张琪曼通过时空监测点听到40年前的小墨老师对李旭琳这样说。话说张琪曼等人将历史时间线划分了n个区域,我们可以将之看成是数轴上的n个闭区间[ai,bi]。现要设置尽量少的监测点,使得每个区间内都至少有一个点(不同区间内含的点可以是同一个),请问需要多少个监测点?
输入
第一行为一个整数X,表示有X组数据,每组数据第一行为一个整数n(N≤100),表示有n个闭区间,随后n行每行为两个整数,表示区间左端a和右端b(0≤a≤b≤100)。输出
一个整数,即监测点个数。样例输入
1 3 1 5 2 8 6 9
样例输出
2 思路:要求输出最少的监测点个数,就需要每个点尽量在更多的区间内,每次取每个区间最后的那个点,可以使此点在后序的尽量多的区间内。 代码:
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; struct node{ int begin; int end; }; node tt[105]; int cmp(node a,node b){ return a.end<b.end||a.end==b.end&&a.begin<b.begin; } int main() { int n; int t; int s=0; int c; int k;//记录上一个计入的节目。 scanf("%d",&c); for(int ii=0;ii<c;ii++){ scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d %d",&tt[i].begin,&tt[i].end); } sort(tt,tt+n,cmp); s+=1; k=0; for(int i=1;i<n;i++){ if(tt[i].begin>tt[k].end){ s++; k=i; } } printf("%d\n",s); s=0; } return 0; } /************************************************************** Problem: 2229 User: zz13 Language: C++ Result: 正确 Time:0 ms Memory:1700 kb ****************************************************************/
相关文章推荐
- js事件
- 反射类的学习
- 网站运营先考虑用户忠诚度,再去想产品知名度
- 网站运营先考虑用户忠诚度,再去想产品知名度
- 同义词-方案对象的别名
- JAVA_正则表达式(2)
- Git 学习之路->1
- DSP CCS6.0建立可供移植的工程
- Android ListView 弹性滚动简单实现
- [知了开发]“知了”APP整体设计
- #paramiko#解决安装paramiko的问题记录
- js最佳实践学习记录
- 一步一步ITextSharp 低级操作函数使用
- ORACLE分区表的使用和管理
- 水晶报表 创建odbc数据源出现 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配 问题解决
- 约瑟夫环问题
- 终于将深入理解计算机系统第四章模拟器运行起来了!
- 数据持久化
- Thread 关于线程
- jQuery性能优化与最佳实践