40分蒟蒻求助(悬赏1关注

P8818 [CSP-S 2022] 策略游戏

民间数据全过,官方数据0pts [6](https://www.luogu.com.cn/record/98936141)
by w9095 @ 2023-01-07 16:37:21


@[w9095](/user/569235) 更正,40pts
by w9095 @ 2023-01-07 16:37:50


已AC,此贴结
by w9095 @ 2023-01-07 17:07:22


我也40分,怎么调啊 ```cpp #include<bits/stdc++.h> using namespace std; typedef long long ll; const ll N=200009; const ll INF=1e18+7; ll n,m,q,a[N],b[N],st[7][36][N]; inline void ST1(){ for(ll i=1;i<=n;i++) st[1][0][i]=a[i]; ll p=log(n)/log(2); for(ll k=1;k<=p;k++) for(ll i=1;i<=n-(1<<k)+1;i++) st[1][k][i]=max(st[1][k-1][i],st[1][k-1][i+(1<<(k-1))]); } inline void ST2(){ for(ll i=1;i<=n;i++) st[2][0][i]=a[i]; ll p=log(n)/log(2); for(ll k=1;k<=p;k++) for(ll i=1;i<=n-(1<<k)+1;i++) st[2][k][i]=min(st[2][k-1][i],st[2][k-1][i+(1<<(k-1))]); } inline void ST3(){ for(ll i=1;i<=n;i++) if(a[i]<0) st[3][0][i]=a[i]; else st[3][0][i]=-INF; ll p=log(n)/log(2); for(ll k=1;k<=p;k++) for(ll i=1;i<=n-(1<<k)+1;i++) st[3][k][i]=max(st[3][k-1][i],st[3][k-1][i+(1<<(k-1))]); } inline void ST4(){ for(ll i=1;i<=n;i++) if(a[i]>=0) st[4][0][i]=a[i]; else st[4][0][i]=INF; ll p=log(n)/log(2); for(ll k=1;k<=p;k++) for(ll i=1;i<=n-(1<<k)+1;i++) st[4][k][i]=min(st[4][k-1][i],st[4][k-1][i+(1<<(k-1))]); } inline void ST5(){ for(ll i=1;i<=m;i++) st[5][0][i]=b[i]; ll p=log(m)/log(2); for(ll k=1;k<=p;k++) for(ll i=1;i<=m-(1<<k)+1;i++) st[5][k][i]=max(st[5][k-1][i],st[5][k-1][i+(1<<(k-1))]); } inline void ST6(){ for(ll i=1;i<=m;i++) st[6][0][i]=b[i]; ll p=log(m)/log(2); for(ll k=1;k<=p;k++) for(ll i=1;i<=m-(1<<k)+1;i++) st[6][k][i]=min(st[6][k-1][i],st[6][k-1][i+(1<<(k-1))]); } ll query(ll l1,ll r1,ll l2,ll r2){ ll ans=-INF; ll p1=log(r1-l1+1)/log(2),p2=log(r2-l2+1)/log(2); ll miny=min(st[6][p2][l2],st[6][p2][r2-(1<<p2)+1]); ll maxy=max(st[5][p2][l2],st[5][p2][r2-(1<<p2)+1]); if(miny>0) ans=max(ans,miny*max(st[1][p1][l1],st[1][p1][r1-(1<<p1)+1])); if(miny<=0) if(min(st[4][p1][l1],st[4][p1][r1-(1<<p1)+1])<INF) ans=max(ans,miny*min(st[4][p1][l1],st[4][p1][r1-(1<<p1)+1])); if(maxy>0) if(max(st[3][p1][l1],st[3][p1][r1-(1<<p1)+1])>-INF) ans=max(ans,maxy*max(st[3][p1][l1],st[3][p1][r1-(1<<p1)+1])); if(maxy<=0) ans=max(ans,maxy*min(st[2][p1][l1],st[2][p1][r1-(1<<p1)+1])); return ans; } int main(){ cin>>n>>m>>q; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=m;i++) cin>>b[i]; //cout<<"qwq"<<endl; ST1(); ST2(); ST3(); ST4(); ST5(); ST6(); //cout<<"qaq"<<endl; while(q--){ ll l1,r1,l2,r2; cin>>l1>>r1>>l2>>r2; cout<<query(l1,r1,l2,r2)<<endl; } return 0; } ```
by Yujinhe469 @ 2023-02-25 12:02:54


我也40!
by ssSSSss_sunhaojia @ 2023-04-24 21:52:24


|