51nod 1133 不重叠的线段

网友投稿 706 2022-11-17

51nod 1133 不重叠的线段

51nod 1133 不重叠的线段

例如:[1 5][2 3][3 6],可以选[2 3][3 6],这2条线段互不重叠。

Input

第1行:1个数N,线段的数量(2 <= N <= 10000) 第2 - N + 1行:每行2个数,线段的起点和终点(-10^9 <= S,E <= 10^9)

Output

输出最多可以选择的线段数量。

Input示例

3 1 5 2 3 3 6

Output示例

2

woc我一开始用队列来写,发现记录了半天记录不出来就放弃了,换了写法,网上看到更厉害的代码就贴上来。

是个经典的贪心,这次排序是按照每条线段的末尾来排的。然后以一头就比较每个,然后更新这一头就行了。

代码如下:

#include#include#include#include#includeusing namespace std;#define N 20010struct rng{ int st,ed;}a[N];int Max=1;int cmp(rng x,rng y){ return x.eds;int main(){ int i,j,n,m; scanf("%d",&n); for(i=1;i<=n;i++){ scanf("%d %d",&a[i].st,&a[i].ed); } sort(a+1,a+1+n,cmp); int res=1; for(i=2;i<=n;i++){ if(a[1].ed<=a[i].st){ res++; a[1].ed=a[i].ed; } } printf("%d\n",res); return 0;}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:csuoj 1809 Parenthesis
下一篇:jpa EntityManager 复杂查询实例
相关文章

 发表评论

暂时没有评论,来抢沙发吧~