欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

nyoj--891--找点(贪心)

发布时间:2025/3/15 编程问答 34 豆豆
生活随笔 收集整理的这篇文章主要介绍了 nyoj--891--找点(贪心) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

找点

时间限制:2000 ms  |  内存限制:65535 KB 难度:2 描述

上数学课时,老师给了LYH一些闭区间,让他取尽量少的点,使得每个闭区间内至少有一个点。但是这几天LYH太忙了,你们帮帮他吗?

输入
多组测试数据。
每组数据先输入一个N,表示有N个闭区间(N≤100)。
接下来N行,每行输入两个数a,b(0≤a≤b≤100),表示区间的两个端点。
输出
输出一个整数,表示最少需要找几个点。
样例输入
4 1 5 2 4 1 4 2 3 3 1 2 3 4 5 6 1 2 2
样例输出
1 3 1
来源
原创
上传者

TC_李远航



刚开始很不明白,但是画了几个数据就知道怎么回事了

#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; #define MAX 100010 struct node {int l,r; }edge[MAX]; int vis[MAX]; int cmp(node s1,node s2) {if(s1.r==s2.r)return s1.l<s2.l;return s1.r<s2.r; } int main() {int n;while(scanf("%d",&n)!=EOF){memset(vis,0,sizeof(vis));for(int i=0;i<n;i++)scanf("%d%d",&edge[i].l,&edge[i].r);sort(edge,edge+n,cmp);int cnt=edge[0].r,sum=1;for(int i=1;i<n;i++){if(edge[i].l>cnt){cnt=edge[i].r;sum++;}}printf("%d\n",sum);}return 0; }


转载于:https://www.cnblogs.com/playboy307/p/5273730.html

总结

以上是生活随笔为你收集整理的nyoj--891--找点(贪心)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。