求求
查看原帖
求求
398132
爱好MC的蒟蒻楼主2021/10/23 22:18

孩子暴力写挂了呜呜呜

所以有巨佬能帮忙调吗?

思路:按到达时间排序然后暴力

#include <iostream>
#include <cstdio>
#include <queue>
#include <algorithm>
#define ll long long
using namespace std;
ll n,m1,m2,cntnat,cntinter,leaft[100005],ans,real;
struct nt{
	ll arr,lea;
}nat[100005];
inline ll max(ll x,ll y){
	if(y>x) return y;
	return x;
}
struct iner{
	ll arr,lea;
}inter[100005];
queue<ll> s;
queue<ll> w;
bool cmpt(nt a,nt b){
    return a.arr<b.arr;
}
bool cmpo(iner a,iner b){
    return a.arr<b.arr;
}
int main(){
	freopen("airport.in","r",stdin);
	freopen("airport.out","w",stdout);
	cin >>n>>m1>>m2;
	for(int i=1;i<=m1;i++){
		cin >>nat[i].arr>>nat[i].lea;
	}
	for(int i=1;i<=m2;i++){
	    cin >>inter[i].arr>>inter[i].lea;	
	}
	sort(nat+1,nat+m1,cmpt);
	sort(inter+1,inter+1+m2,cmpo);
	real=-1;
	for(int i=0;i<=n;i++){
		// i->nat     n-i->inter
		int ans=0;
		while(!w.empty()) w.pop();
		while(!s.empty()) s.pop();
		cntnat=0;
		cntinter=0;
		for(int j=1;j<=m1;j++){
			int now=nat[j].arr;
			int MAX=cntnat,ti=0;
			while(ti<MAX){
				ti++;
				int qwq=w.front();
				w.pop();
				if(qwq<now){
					cntnat--;
					continue;
				}
				else w.push(qwq);
			}
			if(cntnat<i){
				w.push(nat[j].lea);
				cntnat++;
				ans++;
				//cout <<j<<endl;
				continue;
			}
		}
		//cout <<ans<<endl;
		for(int j=1;j<=m2;j++){
			int now=inter[j].arr;
			int MAX=cntinter,ti=0;
			while(ti<MAX){
				ti++;
				int qwq=s.front();
				s.pop();
				if(qwq<now){
					cntinter--;
					continue;
				}
				else s.push(qwq);
			}
			if(cntinter<n-i){
				s.push(inter[j].lea);
				cntinter++;
				ans++;
				//cout <<"bianhao   "<<j<<endl;
				continue;
			}
		}
		//cout <<ans<<endl;
		real=max(real,ans);
	}
	cout <<real;
	return 0;
}
// n1e5

CCF普及提高出2道模拟没horse

2021/10/23 22:18
加载中...