关于奇怪的爆零
查看原帖
关于奇怪的爆零
432043
_moorhsum_楼主2021/10/24 18:35
#include<bits/stdc++.h>
using namespace std;
int n,m1,m2;
struct w
{
	int t1,t2;
}dome[100009],inter[100009];
int dp[100009][3],pre,vis[100009][5],fp[100009][5],maxk;
bool cmp(w a,w b)
{
	return a.t1<b.t1;
}
int main()
{
	freopen("airport.in","r",stdin);
	freopen("airport.out","w",stdout);
	cin>>n>>m1>>m2;
	for(int i=1;i<=m1;i++)
	{
		cin>>dome[i].t1>>dome[i].t2;
//		cout<<"-";
	}
	sort(dome+1,dome+m1+1,cmp);
	for(int i=1;i<=m2;i++)
	{
		cin>>inter[i].t1>>inter[i].t2;
//		cout<<"+";
	}
	sort(inter+1,inter+m2+1,cmp);
	for(int i=1;i<=m1;i++) for(int j=dome[i-1].t1+1;j<=dome[i].t1;j++) fp[j][1]=i;
	for(int i=1;i<=m2;i++) for(int j=inter[i-1].t1+1;j<=inter[i].t1;j++) fp[j][2]=i;
	for(int q=1;q<=n;q++)
	{
//		cout<<"^";
		dp[q][1]=dp[q-1][1];
		dp[q][2]=dp[q-1][2];
		pre=1;
		do
		{
			bool flg=0;
			for(int i=fp[pre][1];i<=m1;i++)
			{
				if(vis[i][1]) continue;
				else
				{
					dp[q][1]++;
					pre=dome[i].t2;
					vis[i][1]=1;
					flg=1;
				}
				if(flg) break;
			}
			if(!flg) break;
		}while(fp[pre][1]);
		pre=1;
		while(fp[pre][2])
		{
			bool flg=0;
			for(int i=fp[pre][2];i<=m2;i++)
			{
				if(vis[i][2]) continue;
				else
				{
					dp[q][2]++;
					pre=inter[i].t2;
					vis[i][2]=1;
					flg=1;
					break;
				}
			}
			if(!flg) break;
		}
	}
	int maxn=0;
	for(int i=0;i<=n;i++)
	{
		maxn=max(maxn,dp[i][1]+dp[n-i][2]);
//		if(maxn<dp[i][1]+dp[n-i][2]) maxk=i;
	}
	cout<<maxn;
	return 0;
}

开了文件输入输出全 WA,关了全 RE

但本人考场上测的,大小样例都没问题啊?

2021/10/24 18:35
加载中...