30分TLE求救
查看原帖
30分TLE求救
1219707
CB_X2_Jun楼主2024/10/7 14:32
#include <iostream>
#include <algorithm>
#include <queue>
using namespace std;
int n,m1,m2;
struct p
{
    int a,b;
}g[100001],w[100001],gn[100001],gw[100001];
bool cmp(p c,p d)
{
    return c.a<d.a;
}
bool cmm(p c,p d)
{
    return c.b<d.b;
}
int main()
{
    cin.tie(0);cout.tie(0);ios::sync_with_stdio(false);
    cin >> n >> m1 >> m2;
    if(n>=m1+m2)
    {
        cout << m1+m2;
        return 0;
    }
    for(int i=1; i<=m1; i++)
    {
        cin >> g[i].a >> g[i].b;
    }
    for(int i=1; i<=m2; i++)
    {
        cin >> w[i].a >> w[i].b;
    }
    sort(g+1,g+m1+1,cmp);
    sort(w+1,w+m2+1,cmp);
    int nn1,nn2,maxx=0;
    for(int i=0; i<=n; i++)
    {
        int j=n-i,c1=0,c2=0,l1=1,r1=1,l2=1,r2=1;
        nn1=i,nn2=j;
        if(nn1!=0)
        {
            gn[1]=g[1];
            r1=2;
            c1++;
            nn1--;
            for(int z=2; z<=m1; z++)
            {
                sort(gn+1,gn+c1+1,cmm);
                p x=g[z],y=gn[l1];
                if(y.b<x.a)
                {
                    l1++;
                    nn1++;
                }
                if(nn1!=0)
                {
                    gn[r1]=g[z];
                    c1++;
                    r1++;
                    nn1--;
                }
            }
        }
        if(nn2!=0)
        {
            gw[1]=w[1];
            r2=2;
            c2++;
            nn2--;
            for(int z=2; z<=m2; z++)
            {
                sort(gw+1,gw+c2+1,cmm);
                p x=w[z],y=gw[l2];
                if(y.b<x.a)
                {
                    l2++;
                    nn2++;
                }
                if(nn2!=0)
                {
                    gw[r2]=w[z];
                    c2++;
                    r2++;
                    nn2--;
                }
            }
        }
        maxx=max(maxx,c1+c2);
    }
    cout << maxx;
    return 0;
}
2024/10/7 14:32
加载中...