NYOJ 891 找点
来源:互联网 发布:郑州美好电子淘宝店 编辑:程序博客网 时间:2024/04/29 06:22
描述
上数学课时,老师给了LYH一些闭区间,让他取尽量少的点,使得每个闭区间内至少有一个点。但是这几天LYH太忙了,你们帮帮他吗?
输入多组测试数据。
每组数据先输入一个N,表示有N个闭区间(N≤100)。
接下来N行,每行输入两个数a,b(0≤a≤b≤100),表示区间的两个端点。输出输出一个整数,表示最少需要找几个点。样例输入
41 52 41 42 331 23 45 612 2
样例输出
131
很简单的一道贪心算法题。
排序后找重合区域就可以了。 注意这组数据:
4
1 5
2 4
1 4
2 3
结果是1,
#include <stdio.h>#include <stdlib.h>typedef struct{ int l; int r;}limits;limits pot[101]; int comp ( const void *a, const void *b ){ limits *c = (limits *) a; limits *d = (limits *) b; if(c->l != d->l) return c->l - d->l; else return d->r - c->r; } void readp(int n){ int i; for (i=0;i<n;i++) { scanf("%d%d",&pot[i].l,&pot[i].r); } } void findp(int n){ int i; int stand; int ti=1; qsort(pot,n,sizeof(limits),comp); stand=pot[0].r; for (i=1;i<n;i++) { if (pot[i].l>stand) { stand=pot[i].r; ti++; } if (pot[i].l<=stand&&pot[i].r<=stand) { stand=pot[i].r; } } printf("%d\n",ti);}int main(){ int n; while(scanf("%d",&n)!=EOF) { readp(n); findp(n); } return 0;}
0 0
- nyoj-891-找点
- NYOJ 891 找点
- NYOJ-891-找点
- NYOJ 891 找点
- NYOJ-891 找点
- NYOJ 891 找点
- NYOJ 891 找点
- nyoj 891 找点
- NYOJ 891 找点
- 找点 nyoj 891
- NYOJ--891--找点
- nyoj 891 找点
- nyoj 891 找点
- NYOJ 891 找点
- NYOJ 891 找点
- NYOJ 891 找点
- NYOJ-891 找点
- nyoj 891 找点
- 如何编写可以检查死锁的代码?
- USACO Barn Repair
- EBS 打印机设置——PASTA
- wireshark错误包显示和隐藏
- 人与计算机的区别
- NYOJ 891 找点
- 初识spring boot maven管理--配置文件
- 2014_04_14第16周周四工作日志:获取用户sid的三种方法
- pyramid学习笔记3-创建注册页面
- Java学习记录7
- 阿里巴巴2011笔试题+答案解析
- NYOJ 91 阶乘之和
- Java学习记录8
- PAT 1074. Reversing Linked List