NYOJ 891 找点 (贪心&区间选点)
来源:互联网 发布:淘宝pc端首页焦点图 编辑:程序博客网 时间:2024/05/23 11:53
找点
时间限制:2000 ms | 内存限制:65535 KB
难度:2
- 描述
上数学课时,老师给了LYH一些闭区间,让他取尽量少的点,使得每个闭区间内至少有一个点。但是这几天LYH太忙了,你们帮帮他吗?
- 输入
- 多组测试数据。
每组数据先输入一个N,表示有N个闭区间(N≤100)。
接下来N行,每行输入两个数a,b(0≤a≤b≤100),表示区间的两个端点。 - 输出
- 输出一个整数,表示最少需要找几个点。
- 样例输入
41 52 41 42 331 23 45 612 2
- 样例输出
131
贪心算法:区间选点
例如1:(示例数据 1 排序后的数据)
2 3 开始必有一点 cnt = 1 ; 记录右端的值 a = 3
1 4 左端的 1 小于a , 不用选点 ; 不用更新 右端的值 a 仍为 3
2 4 左端的 2 小于 a, 不用选点 ; 不用更新 右端的值 a 仍为 3
1 5 左端的 1 小于a , 不用选点 ; 不用更新 右端的值 a 仍为 3
所以 所选点数 cnt = 1.例如2:(示例数据 2 排序后的数据)
1 2 开始必有一点 cnt=1; 记录右端的值 a=2
3 4 左端的 3 大于a , cnt ++ ; 更新 右端的值 a=4
5 6 左端的 5 大于a, cnt ++ ; 更新 右端的值a=6
所以 所选点数 cnt = 3
已AC代码:
#include<cstdio>#include<algorithm>using namespace std;struct node{int left,right;}s[110];bool cmp(node a,node b) //依右端从小到大排序 {return a.right<b.right;}int main(){int n,i,a,cnt;while(scanf("%d",&n)!=EOF){for(i=0;i<n;++i)scanf("%d%d",&s[i].left,&s[i].right);sort(s,s+n,cmp);//排序 cnt=1;a=s[0].right;//最小的右端点 for(i=1;i<n;++i){if(a<s[i].left)//如果下一个的左端点大于 a {cnt++; //点数加一 a=s[i].right; //更新 a 的值 }}printf("%d\n",cnt);}return 0;}
0 0
- NYOJ 891 找点 (贪心&区间选点)
- nyoj 891 找点(贪心,区间选点问题)
- nyoj 891 找点 贪心 区间选点问题
- nyoj 891 找点 【区间选点】
- NYOJ - 891 - 找点(区间相关问题---区间选点-贪心算法)
- 贪心法 区间选点问题 南阳oj 找点
- NYOJ891 找点(贪心区间选点问题)
- nyoj 891 找点 【区间找点】
- POJ 1328 && NYOJ 891 - 贪心 区间选点问题
- NYOJ 891 找点【贪心】
- nyoj 891 找点【贪心】
- 找点 NYOJ-891 【贪心】
- NYOJ 287 Radar 贪心之 区间选点
- NYOJ Radar 贪心之区间选点问题
- 区间选点问题(找点)
- NYOJ - 找点【贪心】
- nyoj 找点 891 (贪心)
- nyoj--891--找点(贪心)
- iOS开发UI篇—使用UItableview完成一个简单的QQ好友列表(一)
- java 适配器模式
- java学习笔记IO输入与输出——IO流概述及字节流(2)
- 深入详解Struts2——Struts2初识
- JavaScript面向对象(3)
- NYOJ 891 找点 (贪心&区间选点)
- matlab句柄图形
- iOS项目上传步骤
- 移动端技术演进
- Break与Continue用法注意事项
- unity中3D text渲染遮挡问题解决
- 开发中遇到libc++abi.dylib: terminate_handler unexpectedly threw an exception错误
- php 设置时区
- 【2】Windows客户端C/C++编程规范“建议”——指针