首页 > 其他 > 详细

hdu 5124 lines

时间:2014-12-01 22:04:13      阅读:275      评论:0      收藏:0      [点我收藏+]

http://acm.hdu.edu.cn/showproblem.php?pid=5124

题意:给你n条线段,然后找出一个被最多条线段覆盖的点,输出覆盖这个点的线段的条数。

思路:可以把一条线段分出两个端点离散化,左端点被标记为-1,右端点被标记为1,然后排序,如果遇到标记为-1,cnt++,否则cnt--;找出cnt的最大值。

bubuko.com,布布扣
 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 #define maxn 200010
 5 using namespace std;
 6 
 7 struct node
 8 {
 9     int x,c;
10     bool operator<(const node &a)const
11     {
12         return (x<a.x)||(x==a.x&&c<a.c);
13     }
14 }p[maxn];
15 
16 int t;
17 int n;
18 
19 int main()
20 {
21     scanf("%d",&t);
22     while(t--)
23     {
24         scanf("%d",&n);
25         for(int i=0; i<n; i++)
26         {
27             int s,e;
28             scanf("%d%d",&s,&e);
29             p[i*2].x=s;
30             p[i*2].c=-1;
31             p[i*2+1].x=e;
32             p[i*2+1].c=1;
33         }
34         sort(p,p+2*n);
35         int cnt=0; int ans=0;
36         for(int i=0; i<2*n; i++)
37         {
38             if(p[i].c==-1)
39             {
40                 cnt++;
41             }
42             else
43                 cnt--;
44             ans=max(ans,cnt);
45         }
46         printf("%d\n",ans);
47     }
48     return 0;
49 }
View Code

 

hdu 5124 lines

原文:http://www.cnblogs.com/fanminghui/p/4135922.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!