关于CCF数据
查看原帖
关于CCF数据
158400
晴空一鹤楼主2022/11/8 14:55

rt,民间数据100CCF数据40,ST表求调。

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define ll __int128
int a[100005],b[100005];int st1[100005][30],st2[100005][30],st3[100005][30],st4[100005][30],st5[100005][30],st6[100005][30];
int l,rr,lll,rrr;
int ama,ami,amma,ammi,bma,bmi;
void inline r(int &x)
{
	x=0;char c=getchar();int f=1;
	while(c>'9'||c<'0'){
	if(c=='-')f=-1;c=getchar();}
	while(c>='0'&&c<='9')
	{
	x=(x<<1)+(x<<3)+(c^48);
	c=getchar();
	}
	x*=f;
}
void inline pr(ll x)
{
	if(x<0)
	{
	putchar('-');
	pr(-x);
	return ;
	}
	if(x>=10)pr(x/10);
	putchar(x%10^48);
}
int n,m,q;
void inline st()
{
	for(int i=1;i<=n;i++)
	st1[i][0]=a[i];
	for(int i=1;i<=29;i++)
	  for(int j=1;j<=n-(1<<i)+1;j++)
	    st1[j][i]=max(st1[j][i-1],st1[j+(1<<(i-1))][i-1]);
}
void inline stt()
{
	for(int i=1;i<=n;i++)
	st2[i][0]=a[i];
	for(int i=1;i<=29;i++)
	  for(int j=1;j<=n-(1<<i)+1;j++)
	    st2[j][i]=min(st2[j][i-1],st2[j+(1<<(i-1))][i-1]);
}
void inline sttt()
{
	for(int i=1;i<=n;i++)
	if(a[i]>=0)
	st3[i][0]=a[i];
	else
	st3[i][0]=40000000000000;
	for(int i=1;i<=29;i++)
	  for(int j=1;j<=n-(1<<i)+1;j++)
	    st3[j][i]=min(st3[j][i-1],st3[j+(1<<(i-1))][i-1]);
}
void inline stttt()
{
	for(int i=1;i<=n;i++)
	if(a[i]<=0)
	st4[i][0]=a[i];
	else
	st4[i][0]=-40000000000000;
	for(int i=1;i<=29;i++)
	  for(int j=1;j<=n-(1<<i)+1;j++)
	    st4[j][i]=max(st4[j][i-1],st4[j+(1<<(i-1))][i-1]);
}
void inline sttttt()
{
	for(int i=1;i<=m;i++)
	st5[i][0]=b[i];
	for(int i=1;i<=29;i++)
	  for(int j=1;j<=m-(1<<i)+1;j++)
	    st5[j][i]=max(st5[j][i-1],st5[j+(1<<(i-1))][i-1]);
}
void inline stttttt()
{
	for(int i=1;i<=m;i++)
	st6[i][0]=b[i];
	for(int i=1;i<=29;i++)
	  for(int j=1;j<=m-(1<<i)+1;j++)
	    st6[j][i]=min(st6[j][i-1],st6[j+(1<<(i-1))][i-1]);
}
signed main()
{

	r(n);r(m);r(q);
	for(int i=1;i<=n;i++)
	r(a[i]);
	for(int j=1;j<=m;j++)
	r(b[j]);
	st();
	stt();
	sttt();
	stttt();
	sttttt();
	stttttt();
	for(int i=1;i<=q;i++)
	{
		r(l);r(rr);r(lll);r(rrr);
		bma=max(st5[lll][(ll)(log2(rrr-lll+1))],st5[rrr-(1<<(ll)(log2(rrr-lll+1)))+1][(ll)(log2(rrr-lll+1))]);
        ama=max(st1[l][(ll)(log2(rr-l+1))],st1[rr-(1<<(ll)(log2(rr-l+1)))+1][(ll)(log2(rr-l+1))]);
        bmi=min(st6[lll][(ll)(log2(rrr-lll+1))],st6[rrr-(1<<(ll)(log2(rrr-lll+1)))+1][(ll)(log2(rrr-lll+1))]);
        ami=min(st2[l][(ll)(log2(rr-l+1))],st2[rr-(1<<(ll)(log2(rr-l+1)))+1][(ll)(log2(rr-l+1))]);
        amma=max(st4[l][(ll)(log2(rr-l+1))],st4[rr-(1<<(ll)(log2(rr-l+1)))+1][(ll)(log2(rr-l+1))]);
        ammi=min(st3[l][(ll)(log2(rr-l+1))],st3[rr-(1<<(ll)(log2(rr-l+1)))+1][(ll)(log2(rr-l+1))]);
        //cout<<ami<<" "<<ama<<" "<<bmi<<" "<<bma<<" "<<ammi<<" "<<amma<<"\n";
		if(bma<=0&&bmi>=0)
pr(max(((ll)ami)*((ll)bma),((ll)ama)*((ll)bmi)));
else
        if(bma<=0)
        pr(((ll)ami)*((ll)bma));
        else if(bmi>=0)
        pr(((ll)ama)*((ll)bmi));
         else if(amma<=-40000000000)pr(((ll)ammi)*((ll)bmi));
          else if(ammi>=40000000000)pr(((ll)amma)*((ll)bma));
        else pr(max(((ll)amma)*((ll)bma),((ll)ammi)*((ll)bmi)));
        putchar('\n');
	}
}
2022/11/8 14:55
加载中...