2 2 1 2 3 4 2 3 4 5 3 2 3 5 7 6 8 4 1 2 5 3 4
1 2
#include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #include<set> using namespace std; struct node { int a; int b; }; node q[200110],q1[200110]; __int64 vis[200110]; multiset<int>s; std::multiset<int>::iterator it; bool cmp(node a,node b) { if(a.b==b.b) { return a.a<b.a; } return a.b<b.b; } int main() { int T,n; scanf("%d",&T); while(T--) { s.clear(); scanf("%d",&n); for(int i=1; i<=n; i++) { scanf("%d%d",&q[i].a,&q[i].b); } for(int i=1; i<=n; i++) { scanf("%d%d",&q1[i].a,&q1[i].b); } sort(q+1,q+1+n,cmp); sort(q1+1,q1+1+n,cmp); int x=1; int ans=0; memset(vis,0,sizeof(vis)); for(int i=1; i<=n; i++) { while(x<=n&&q1[x].b<=q[i].b) { s.insert(q1[x].a); x++; } if(s.size()==0) { continue; } it=s.lower_bound(q[i].a); if(*(it)==q[i].a) { s.erase(it); ans++; } else { if(it!=s.begin()) { --it; s.erase(it); ans++; } } } printf("%d\n",ans); } return 0; }
版权声明:本文为博主原创文章,如有特殊需要请与博主联系 QQ : 793977586。
原文:http://blog.csdn.net/yeguxin/article/details/48000085