hdu 4268

来源:互联网 发布:java 获取pom 版本号 编辑:程序博客网 时间:2024/06/05 12:44

题目链接

先按h从小到大排序,查找离w最近的值,删除他

 

#include <cstdio>#include <cstring>#include <set>#include <algorithm>using namespace std;#define N 100010multiset<int> myset;multiset<int>::iterator it;int n,m;struct node{    int h,w;    bool operator <(const node &b) const    {        return h<b.h;    }}a[N],b[N];int main(){    int i,j,cas,ans;    scanf("%d",&cas);    while(cas--)    {        myset.clear();        scanf("%d",&n);        for(i=0;i<n;i++)        {            scanf("%d%d",&a[i].h,&a[i].w);        }        for(i=0;i<n;i++)        {            scanf("%d%d",&b[i].h,&b[i].w);        }        sort(a,a+n);        sort(b,b+n);        i=0;j=0;ans=0;        while(i<n)        {            while(j<n&&a[i].h>=b[j].h)            {                myset.insert(b[j].w);                j++;            }            it=myset.upper_bound(a[i].w);            if(!myset.empty())            {                if(it!=myset.begin())                    it--;                if(*it<=a[i].w)                {                    ans++;                    myset.erase(it);                }            }            i++;        }        printf("%d\n",ans);    }    return 0;}


 

原创粉丝点击