55pts求优化
查看原帖
55pts求优化
567632
望月野QwQ楼主2022/8/5 10:04

优先队列做的

#include<iostream>
#include<algorithm>
#include<queue>
#define long long int
using namespace std;
int n,m1,m2;
struct air
{
   int arr,left;
   bool operator<(const air &x) const
   {
       return left>x.left;
   }
}in[1000001],ab[1000001];
priority_queue<air>abroad;
priority_queue<air>inbroad;
int a[10000001],b[10000001];
bool aa[100001],bb[1000001];
int solve1(int x)
{
   int cnt=0;
   for(int i=1;i<=m1;i++)
   {
   	if(aa[i])continue;
   	if(!inbroad.empty())
   	{
   		if(in[i].arr>inbroad.top().left)
   		{
   			inbroad.pop();
   			inbroad.push(in[i]);
   			cnt++;
   			aa[i]=true;
   		}
   		else if(inbroad.size()<x)
   		{
   			inbroad.push(in[i]);
   			cnt++;
   			aa[i]=true;
   		}
   	//	else return cnt;
   	}
   	else 
   	{
   		inbroad.push(in[i]);
   		cnt++;
   		aa[i]=true;
   	}
   }
   return cnt;
}
int solve2(int x)
{
   int cnt=0;
//	cout<<"   "<<cnt2<<endl;
   for(int i=1;i<=m2;i++)
   {
   	if(bb[i])continue;
   	if(!abroad.empty())
   	{
   		if(ab[i].arr>abroad.top().left)
   		{
   			abroad.pop();
   			abroad.push(ab[i]);
   			cnt++;
   			bb[i]=true;
   		}
   		else if(abroad.size()<x)
   		{
   			abroad.push(ab[i]);
   			cnt++;
   			bb[i]=true;
   		}	
   	//	else return cnt;
   	}
   	else
   	{
   		abroad.push(ab[i]);
   		cnt++;
   		bb[i]=true;
   	}
   }
   return cnt;
}
bool cmp(air a,air b)
{
   return a.arr<b.arr;
}
signed main()
{
   cin>>n>>m1>>m2;
   for(int i=1;i<=m1;i++)
   {
   	cin>>in[i].arr>>in[i].left; 
   }
   sort(in+1,in+m1+1,cmp);
   for(int i=1;i<=m2;i++)
   {
   	cin>>ab[i].arr>>ab[i].left;
   }
   sort(ab+1,ab+m2+1,cmp);
   for(int i=1;i<=n;i++)
   {
   	a[i]=a[i-1]+solve1(i);
   //	cout<<a[i]<<endl;
   }
//	cout<<endl;
   for(int i=1;i<=n;i++)
   {
   	b[i]=b[i-1]+solve2(i);
   //	cout<<b[i]<<endl;
   }
   int ans=0;
   for(int i=0;i<=n;i++)
   {
   	ans=max(ans,(a[i]+b[n-i]));
   }
   cout<<ans<<endl;
   return 0;
}

测试点#10 #11 #12 #14 #15 #17 #18 #19 #20 #21 #22 TLE

2022/8/5 10:04
加载中...