特殊性质2挂了求助
查看原帖
特殊性质2挂了求助
468657
lsj2009Isj2OO9楼主2022/10/29 21:08

rt.

下面只有特殊性质的代码。

	const int N=1e5+5;
	int a[N],b[N],fa[N][12],ga[N][12],fb[N][12],gb[N][12];
	int queryfa(int l,int r) {
		int k=log2(r-l+1);
		return max(fa[l][k],fa[r-(1<<k)+1][k]);
	}
	int queryfb(int l,int r) {
		int k=log2(r-l+1);
		return max(fb[l][k],fb[r-(1<<k)+1][k]);
	}
	int queryga(int l,int r) {
		int k=log2(r-l+1);
		return min(ga[l][k],ga[r-(1<<k)+1][k]);
	}
	int querygb(int l,int r) {
		int k=log2(r-l+1);
		return min(gb[l][k],gb[r-(1<<k)+1][k]);
	}
	int main() {
		rep(i,1,n)
			scanf("%lld",&a[i]),fa[i][0]=ga[i][0]=a[i];
		rep(i,1,m)
			scanf("%lld",&b[i]),fb[i][0]=gb[i][0]=b[i];
		rep(j,1,10) {
			rep(i,1,n-(1<<j)+1)
				fa[i][j]=max(fa[i][j-1],fa[i+(1<<(j-1))][j-1]),
				ga[i][j]=min(ga[i][j-1],ga[i+(1<<(j-1))][j-1]);
		}
		rep(j,1,10) {
			rep(i,1,m-(1<<j)+1)
				fb[i][j]=max(fb[i][j-1],fb[i+(1<<(j-1))][j-1]),
				gb[i][j]=min(gb[i][j-1],gb[i+(1<<(j-1))][j-1]);
		}
		rep(_,1,q) {
			int l1,l2,r1,r2;
			scanf("%lld%lld%lld%lld",&l1,&r1,&l2,&r2);
			if(l1==r1)
				printf("%lld\n",min(a[l1]*queryfb(l2,r2),a[l1]*querygb(l2,r2)));
			else
				printf("%lld\n",max(b[l2]*queryfa(l1,r1),b[l2]*queryga(l1,r1)));
		}
		return 0;
	}
2022/10/29 21:08
加载中...