社区讨论
ST代码60求调
P8818[CSP-S 2022] 策略游戏参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mhjd22sf
- 此快照首次捕获于
- 2025/11/04 00:34 4 个月前
- 此快照最后确认于
- 2025/11/04 00:34 4 个月前
CPP
#include <bits/stdc++.h>
using namespace std;
const long long maxinf = LONG_LONG_MAX, mininf = LONG_LONG_MIN;
inline int read() {
int x = 0;
bool f = true;
char ch = getchar();
for (; !isdigit(ch); ch = getchar())
if (ch == '-')
f = false;
for (; isdigit(ch); ch = getchar())
x = (x << 1) + (x << 3) + ch - '0';
return f ? x : (~(x - 1));
}
long long n,m,q,x,l1,r1,l2,r2,x1[100005][10],x2[100005][10],y[100005][10],y2[100005][10],xa1[100005][10],xa2[100005][10];
inline bool gmx(long long &aa,long long bb){
if(bb>aa){
aa=bb;
return true;
}
return false;
}
int main(){
n=read(),m=read(),q=read();
for(int i=1;i<=n;i++){
x=read();
x1[i][0]=x2[i][0]=x;
if(x<0){
xa1[i][0]=x;
xa2[i][0]=maxinf;
}else{
xa2[i][0]=x;
xa1[i][0]=mininf;
}
}
for(int j=1;j<=m;j++){
x=read();
y[j][0]=y2[j][0]=x;
}
long long t1=log(n)/log(2)+1,t2=log(m)/log(2)+1;
for(int j=1;j<=t1;++j){
for(int i=1;i<=n-(1<<j)+1;++i){
x1[i][j]=max(x1[i][j-1],x1[i+(1<<(j-1))][j-1]);
x2[i][j]=min(x2[i][j-1],x2[i+(1<<(j-1))][j-1]);
xa1[i][j]=max(xa1[i][j-1],xa1[i+(1<<(j-1))][j-1]);
xa2[i][j]=min(xa2[i][j-1],xa2[i+(1<<(j-1))][j-1]);
}
}
for(int j=1;j<=t2;++j){
for(int i=1;i<=m-(1<<j)+1;++i){
y[i][j]=max(y[i][j-1],y[i+(1<<(j-1))][j-1]);
y2[i][j]=min(y2[i][j-1],y2[i+(1<<(j-1))][j-1]);
}
}
while(q--){
l1=read(),r1=read(),l2=read(),r2=read();
long long k1=log(r1-l1+1)/log(2),k2=log(r2-l2+1)/log(2);
long long a1=max(x1[l1][k1],x1[r1-(1<<k1)+1][k1]),a2=min(x2[l1][k1],x2[r1-(1<<k1)+1][k1]);
long long b1=max(y[l2][k2],y[r2-(1<<k2)+1][k2]),b2=min(y2[l2][k2],y2[r2-(1<<k2)+1][k2]);
long long aa1=max(xa1[l1][k1],xa1[r1-(1<<k1)+1][k1]),aa2=min(xa2[l1][k1],xa2[r1-(1<<k1)+1][k1]);
long long ans=mininf;
gmx(ans, a1 * (a1 >= 0 ? b2 : b1));
gmx(ans, a2 * (a2 >= 0 ? b2 : b1));
if (aa1 != mininf) gmx(ans, aa1 * (aa1 >= 0 ? b2 : b1));
if (aa2 !=maxinf) gmx(ans, aa2 * (aa2 >= 0 ? b2 : b1));
cout << ans << endl;
}
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...