闲时的大佬们,蒟蒻求助,P8818,不知为什么爆0
  • 板块学术版
  • 楼主ytcfghyeee
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/7/15 10:44
  • 上次更新2023/11/3 09:45:22
查看原帖
闲时的大佬们,蒟蒻求助,P8818,不知为什么爆0
360279
ytcfghyeee楼主2023/7/15 10:44

rt

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define N 100005
#define fN -1000050000
#define zN 1000050000
#define int long long
	int nl,ml,a[N],b[N],lh[N];
#define mx(a,b) ((a)>(b)?(a):(b))
#define mn(a,b) ((a)<(b)?(a):(b))
#define gc getchar
#define K(a,b) (fN<=(b)&&(b)<=zN?(b):(a))
int re(){
	int ss=0,f1=0;
	char f=gc();
	while(f<'0'||f>'9')
	f1|=(f=='-'),f=gc();
	while('0'<=f&&f<='9')
	ss=ss*10+f-'0',f=gc();
	return f1?-ss:ss;
}
struct xy{
	int fx[N][22],zx[N][22];
	int fy[N][22],zy[N][22];
	xy(){
		memset(fx,128,sizeof fx);
		memset(zx,-1,sizeof zx);
		memset(fy,1,sizeof fy);
		memset(zy,0x3f3f3f,sizeof zy);
		return ;
	}
	inline void init(int x[],int n){
		int i,j;
		for(i=1;i<=n;++i){
			if(x[i]<0){
				fx[i][0]=mx(fx[i][0],x[i]);
				fy[i][0]=mn(fy[i][0],x[i]);
			}else{
				zx[i][0]=mx(zx[i][0],x[i]);
				zy[i][0]=mn(zy[i][0],x[i]);
			}
		}
		for(j=1;j<=lh[n];++j)
		for(i=1;i+(1<<j)-1<=n;++i){
			fx[i][j]=mx(fx[i][j-1],fx[i+(1<<(j-1))][j-1]);
			fy[i][j]=mn(fy[i][j-1],fy[i+(1<<(j-1))][j-1]);
			zx[i][j]=mx(zx[i][j-1],zx[i+(1<<(j-1))][j-1]);
			zy[i][j]=mn(zy[i][j-1],zy[i+(1<<(j-1))][j-1]);
		}
	}
}xa,xb;
signed main(){
	nl=re();ml=re();
	int i,q=re(),l,r,k,zx,zy,fx,fy;
	for(i=1;i<=nl;++i)a[i]=re();
	for(i=1;i<=ml;++i)b[i]=re();
	for(i=2;i<=mx(nl,ml);++i) lh[i]=lh[i>>1]+1;
	
	xa.init(a,nl);
	xb.init(b,ml);
	int x1,x2,x3,x4,ans;
	for(i=1;i<=q;++i){
		l=re();r=re();
		k=lh[r-l+1];
		fx=mx(xa.fx[l][k],xa.fx[r-(1<<k)+1][k]);
		fy=mn(xa.fy[l][k],xa.fy[r-(1<<k)+1][k]);
		zx=mx(xa.zx[l][k],xa.zx[r-(1<<k)+1][k]);
		zy=mn(xa.zy[l][k],xa.zy[r-(1<<k)+1][k]);
/*
2 2 1
-1 -2
1 -1 -3
1 2 2 3
*/
		
		x1=x2=x3=x4=9999999999;
		l=re();r=re();
		k=lh[r-l+1];
		x1=mn( K(x1,fx*mx(xb.fx[l][k],xb.fx[r-(1<<k)+1][k]) ) ,mn( K(x1,fx*mn(xb.fy[l][k],xb.fy[r-(1<<k)+1][k])) ,
			mn( K(x1,fx*mx(xb.zx[l][k],xb.zx[r-(1<<k)+1][k])),K(x1,fx*mn(xb.zy[l][k],xb.zy[r-(1<<k)+1][k]) ))));
			
		x2=mn( K(x2,fy*mx(xb.fx[l][k],xb.fx[r-(1<<k)+1][k]) ) ,mn( K(x2,fy*mn(xb.fy[l][k],xb.fy[r-(1<<k)+1][k])) ,
			mn( K(x2,fy*mx(xb.zx[l][k],xb.zx[r-(1<<k)+1][k])),K(x2,fy*mn(xb.zy[l][k],xb.zy[r-(1<<k)+1][k]) ))));
			
		x3=mn( K(x3,zx*mx(xb.fx[l][k],xb.fx[r-(1<<k)+1][k]) ) ,mn( K(x3,zx*mn(xb.fy[l][k],xb.fy[r-(1<<k)+1][k])) ,
			mn( K(x3,zx*mx(xb.zx[l][k],xb.zx[r-(1<<k)+1][k])),K(x3,zx*mn(xb.zy[l][k],xb.zy[r-(1<<k)+1][k])))));
			
		x4=mn( K(x4,zy*mx(xb.fx[l][k],xb.fx[r-(1<<k)+1][k]) ) ,mn( K(x4,zy*mn(xb.fy[l][k],xb.fy[r-(1<<k)+1][k])) ,
			mn( K(x4,zy*mx(xb.zx[l][k],xb.zx[r-(1<<k)+1][k])),K(x4,zy*mn(xb.zy[l][k],xb.zy[r-(1<<k)+1][k])))));

		ans=mx(x1,K(x1,mx(x2,K(x2,mx(x3,K(x3,x4))))));
		printf("%lld\n",ans);
	}
	return 0;
}
2023/7/15 10:44
加载中...