[思路题] hdu 5124 lines
2015-04-28 19:51
344 查看
题意:
给n个区间 [x,y],问被最多覆盖的点,被覆盖了多少次。
思路:
一个很巧妙的方法。好像原来有接触过。
就是如果给你[1,3]就used[1]++,used[4]--。
然后从左到又过一遍出现的点 依次累加每次加的时候取最大值。
然后这题需要用到map离散化。
代码:
给n个区间 [x,y],问被最多覆盖的点,被覆盖了多少次。
思路:
一个很巧妙的方法。好像原来有接触过。
就是如果给你[1,3]就used[1]++,used[4]--。
然后从左到又过一遍出现的点 依次累加每次加的时候取最大值。
然后这题需要用到map离散化。
代码:
#include"cstdlib" #include"cstdio" #include"cstring" #include"cmath" #include"queue" #include"algorithm" #include"iostream" #include"map" #include"stack" #include"vector" #define ll __int64 #define inf -999999999999999999LL using namespace std; int a[123456],b[123456]; int main() { int t; cin>>t; while(t--) { int cnt=1; int n; scanf("%d",&n); memset(a,0,sizeof(a)); map<int,int>mp; while(n--) { int x,y; scanf("%d%d",&x,&y); y++; if(!mp[x]) { b[cnt]=x; mp[x]=cnt++; } if(!mp[y]) { b[cnt]=y; mp[y]=cnt++; } a[mp[x]]++; a[mp[y]]--; } sort(b+1,b+1+cnt); int sum=0,ans=0; for(int i=1;i<cnt;i++) { sum+=a[mp[b[i]]]; ans=max(sum,ans); } printf("%d\n",ans); } return 0; }
相关文章推荐
- hdu 5124 lines(贪心)
- hdu 5124 BestCoder #20 1002 lines 解题报告
- hdu 5124——lines
- hdu 5124 lines
- HDU 5124 lines
- 【CUGBACM15级BC第20场 B】hdu 5124 lines
- 【扫描线】HDU 5124 lines
- HDU 5124 lines
- HDU 5124 lines 最大区间重叠点(离散化)
- hdu 5124 lines(Bestcoder Round #20)
- 【瞎搞】HDU 5124 lines
- HDU 5124 lines
- hdu5124——lines
- BestCoder20 1002.lines (hdu 5124) 解题报告
- 【HDU - 5124】 lines 【树状数组+离散化】
- hdu 5124 lines(树状数组)
- HDU - 5124 lines
- HDU 5124 lines
- 哈理工练习赛 HDU 5124 lines
- hdu 5124 lines (线段树+离散化)