[思路题] hdu 5124 lines

题意:

给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 -999999999999999999LLusing 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

相关文章:

你感兴趣的文章:

标签云: