样例全过但是洛谷测爆零了……
查看原帖
样例全过但是洛谷测爆零了……
81126
yaosiqi楼主2021/10/23 22:58

还有救吗还有救吗救救孩子真的要睡不着了

#include<iostream>
#include<cstdio>
#include<utility>
#include<queue>
using namespace std;
int n,m1,m2,tmp1,tmp2,cnt,cntmax,ldm1,ldm2,cntld;
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >t1_0;
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >t2_0;
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >t1;
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >t2;
pair<int,int> tmp;
int main()
{
	freopen("airport.in","r",stdin);
	freopen("airport.out","w",stdout);
	cin>>n>>m1>>m2;
	if(n>=m1+m2){cout<<m1+m2<<endl;return 0;}
	for(int i=0;i<m1;++i)
	{
		cin>>tmp1>>tmp2;
		t1_0.push(make_pair(tmp1,tmp2));
	}
	for(int i=0;i<m2;++i)
	{
		cin>>tmp1>>tmp2;
		t2_0.push(make_pair(tmp1,tmp2));
	}
	for(ldm1=0;ldm1<=m1&&ldm1<=n;ldm1++)
	{
		ldm2=n-ldm1;
		t1=t1_0;t2=t2_0;cntld=0;cnt=0;
		//cout<<ldm1<<endl;
		if(ldm1>0&&ldm1<m1)
		{
			priority_queue<int,vector<int>,greater<int> >ld;
			tmp=t1.top();
			t1.pop();
			ld.push(tmp.second);
			++cntld;++cnt;//cout<<tmp.first<<" "<<tmp.second<<endl;
		    for(int i=1;i<m1;i++)
	    	{
	    		tmp=t1.top();
	    		t1.pop();
	    		while(tmp.first>ld.top()&&cntld>0)
	            {
	            	ld.pop();--cntld;
            	}
            	if(cntld<ldm1){ld.push(tmp.second);++cntld;++cnt;/*cout<<tmp.first<<" "<<tmp.second<<endl;ptld();*/}
	    	}
	    }
	    else if(ldm1==m1)cnt+=m1;
	    cntld=0;
	    //cout<<ldm2<<endl;
	    if(ldm2>0&&ldm2<m2)
	    {
	    	priority_queue<int,vector<int>,greater<int> >ld;
	    	tmp=t2.top();
			t2.pop();
			ld.push(tmp.second);
			++cntld;++cnt;//cout<<tmp.first<<" "<<tmp.second<<endl;
		    for(int i=1;i<m1;i++)
	    	{
	    		tmp=t2.top();
	    		t2.pop();
	    		while(tmp.first>ld.top()&&cntld>0)
	            {
	            	ld.pop();--cntld;
            	}
            	if(cntld<ldm2){ld.push(tmp.second);++cntld;++cnt;/*cout<<tmp.first<<" "<<tmp.second<<endl;*/}
	    	}
		}
		else if(ldm2>=m2)cnt+=m2;
		if(cnt>cntmax)cntmax=cnt;
		//cout<<cnt<<endl<<endl;
	}
	cout<<cntmax<<endl;
}
2021/10/23 22:58
加载中...