O(nmq) 估分 100?
  • 板块灌水区
  • 楼主xwh_Marvelous
  • 当前回复4
  • 已保存回复5
  • 发布时间2023/11/20 13:36
  • 上次更新2023/11/20 17:49:59
查看原帖
O(nmq) 估分 100?
614527
xwh_Marvelous楼主2023/11/20 13:36

今年 noip T3

#include<bits/stdc++.h>
using namespace std;
#define N 500005
int c,n,m,q;
int a[N],b[N];
int x[N],y[N],z[N];
int suf[N];
int work(int *x,int *y,int n,int m){
	y[0]=x[0]=-1;
	int p=0;
	for(int i=1;i<=m;i++){
		if(y[i]>y[i-1]){
			while(p<n&&x[p+1]<y[i])p++;
		}else{
			while(p&&x[p]>=y[i])p--;
			if(p==0)return 0;
		}
	}
	if(p==n)return 1;
	else return 0;
}
signed main(){
	freopen("expand.in","r",stdin);
	freopen("expand.out","w",stdout);
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	cin>>c>>n>>m>>q;
	for(int i=1;i<=n;i++)cin>>a[i],x[i]=a[i];
	for(int i=1;i<=m;i++)cin>>b[i],y[i]=b[i];
	if(x[1]==y[1])cout<<0;
	else if(x[1]<y[1])cout<<work(x,y,n,m);
	else cout<<work(y,x,m,n);
	for(int op=1;op<=q;op++){
		int kx,ky;
		cin>>kx>>ky;
		for(int i=1;i<=n;i++)x[i]=a[i];
		for(int i=1;i<=n;i++)y[i]=b[i];
		for(int i=1;i<=kx;i++){
			int px,v;
			cin>>px>>v;
			x[px]=v;
		}
		for(int i=1;i<=ky;i++){
			int py,v;
			cin>>py>>v;
			y[py]=v;
		}
//		if(op==7){
//			cout<<endl;
//			for(int i=1;i<=n;i++)cout<<x[i]<<' ';cout<<endl;
//			for(int i=1;i<=n;i++)cout<<y[i]<<' ';cout<<endl;
//		}
		if(x[1]==y[1])cout<<0;
		else if(x[1]<y[1])cout<<work(x,y,n,m);
		else cout<<work(y,x,m,n);
	}
	return 0;
} 

难道我复杂度算错了?

2023/11/20 13:36
加载中...