HDU 5124

map优先队列

#include<stdio.h> #include<iostream> #include<algorithm> #include<math.h> #include<string.h> #include<map> #include<queue> using namespace std; int dir[4][2]= {0,1,0,-1,1,0,-1,0}; #define ll long long const int N=1e6+10; struct node { int l,r; }p[N]; int b[N]; int dp[N]; int main() { int T,j,n,i; scanf("%d",&T); while(T--) { map<int,int>mp; memset(b,0,sizeof(b)); memset(p,0,sizeof(p)); memset(dp,0,sizeof(dp)); scanf("%d",&n); for(i=0,j=0;i<n;i++,j+=2) { scanf("%d%d",&p[i].l,&p[i].r); b[j]=p[i].l; b[j+1]=p[i].r; } sort(b,b+j); int ans=unique(b,b+j)-b;///离散化 for(i=0;i<ans;i++) { mp[b[i]]=i+1; } for(i=0;i<n;i++) { dp[mp[p[i].l]]++; dp[mp[p[i].r]+1]--; } int maxx=0; maxx=dp[1]; for(i=2;i<=ans;i++) { dp[i]+=dp[i-1]; maxx=max(maxx,dp[i]); } printf("%d\n",maxx); } return 0; }

 

 
posted @ 2019-05-04 19:57  花看半开,酒饮微醺。  阅读(119)  评论(0编辑  收藏  举报