数据略弱&一个玄学骗分做法
查看原帖
数据略弱&一个玄学骗分做法
161798
_LFK_楼主2021/10/25 20:30

RT

一个玄学骗分做法,截止10/25 20:30A掉了民间数据,建议加强

https://www.luogu.com.cn/record/60942772

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define fox(i,s,e) for(int i=(s);i<=(e);++i)
using namespace std;
struct event{
	int t,code;
	bool type;
};
int n,ma,mb,acnt=0,bcnt=0;
event a[200005],b[200005];
bool idle[100005];
bool cmp(event ea,event eb){
	return ea.t<eb.t?true:false;
}
inline int check(int nas){
	int nbs=n-nas;
	int ans=0;
		//cout<<nas<<" "<<nbs<<endl;
		fox(i,1,acnt){
			if(a[i].type==true){
				if(nas>0){
					--nas;
					++ans;
				}
				else{
					idle[a[i].code]=true;
				}
			}
			else if(idle[a[i].code]==false) ++nas;
			else idle[a[i].code]=false;
		}
		fox(i,1,bcnt){
			if(b[i].type==true){
				if(nbs>0){
					--nbs;
					++ans;
				}
				else{
					idle[b[i].code]=true;
				}
			}
			else if(idle[b[i].code]==false) ++nbs;
			else idle[b[i].code]=false;
		}
		return ans;
}
int main(){
	cin>>n>>ma>>mb;
	memset(idle,false,sizeof(idle));
	fox(i,1,ma){
		cin>>a[++acnt].t;
		a[acnt].type=true;
		a[acnt].code=i;
		cin>>a[++acnt].t;
		a[acnt].type=false;
		a[acnt].code=i;
	}
	fox(i,1,mb){
		cin>>b[++bcnt].t;
		b[bcnt].type=true;
		b[bcnt].code=i;
		cin>>b[++bcnt].t;
		b[bcnt].type=false;
		b[bcnt].code=i;
	}
	sort(a+1,a+acnt+1,cmp),sort(b+1,b+bcnt+1,cmp);
	int l=0,r=n,ansmax=0;
	int midl,midr;
	while(r-l>1000){
		midl=l+(r-l)/3;
		midr=r-(r-l)/3;
		if(check(midl)>check(midr)){
			r=midr;
		}
		else{
			l=midl;
		}
	}
	fox(i,l,r){
		if(check(i)>ansmax)ansmax=check(i);
	}
	cout<< ansmax << endl;
}

2021/10/25 20:30
加载中...