我也不会,错的一模一样,测试点都相同。
by wangjingxi_ @ 2024-06-25 22:04:06
@[saixingzhe](/user/652816) @[wangjingxi_](/user/1133254)
看看[这个](https://www.luogu.com.cn/discuss/837558)
by ChampionCyan @ 2024-06-27 18:23:49
@[weah964](/user/1036180) 好像没啥问题qwq,能帮忙再看一下吗
by saixingzhe @ 2024-06-27 18:38:40
@[saixingzhe](/user/652816) @[wangjingxi_](/user/1133254)
我也40分555...(
```cpp
#include <bits/stdc++.h>
using namespace std;
//For the basic const define.
const long long MAXN = 1e5 + 10;
const long long LOGN = 25;
const long long inf = 2147483647;
const long long inm = -2147483647;
//For the basic define.
long long n, m, q;
//For the maximum of a and b.
long long mxsta[MAXN][LOGN], mxstb[MAXN][LOGN];
//For the minimum of a and b.
long long mnsta[MAXN][LOGN], mnstb[MAXN][LOGN];
//For the minimum which bigger then 0 of a.
long long mnbsta[MAXN][LOGN];
//For the maximum which smaller then 0 of a.
long long mxssta[MAXN][LOGN];
//For the quick log2.
long long logx[MAXN];
//For the quick read of long long.
inline long long read() {
char c = getchar();
long long x = 0, f = 1;
while (c < '0' || c > '9') {
if (c == '-')
f = -1;
c = getchar();
}
while (c >= '0' && c <= '9') {
x = (x << 3) + (x << 1) + c - '0';
c = getchar();
}
return x * f;
}
//For the initialization.
inline void init() {
//Read.
n = read();
m = read();
q = read();
for (long long i = 1; i <= n; i++) {
long long x = read();
mnsta[i][0] = mxsta[i][0] = x;
if (x >= 0) {
mnbsta[i][0] = x;
mxssta[i][0] = inm;
} else {
mxssta[i][0] = x;
mnbsta[i][0] = inf;
}
}
for (long long i = 1; i <= m; i++)
mnstb[i][0] = mxstb[i][0] = read();
//Prepare for the quick log2.
logx[1] = 0;
logx[2] = 1;
for (long long i = 3; i <= max(n, m); i++)
logx[i] = logx[i >> 1] + 1;
//Prepare for Sprase Tables.
for (long long j = 1; j <= logx[n]; j++)
for (long long i = 1; i + (1 << j) - 1 <= n; i++) {
long long s = i + (1 << (j - 1));
mxsta[i][j] = max(mxsta[i][j - 1], mxsta[s][j - 1]);
mxssta[i][j] = max(mxssta[i][j - 1], mxssta[s][j - 1]);
mnsta[i][j] = min(mnsta[i][j - 1], mnsta[s][j - 1]);
mnbsta[i][j] = min(mnbsta[i][j - 1], mnbsta[s][j - 1]);
}
for (long long j = 1; j <= logx[m]; j++)
for (long long i = 1; i + (1 << j) - 1 <= m; i++) {
long long s = i + (1 << (j - 1));
mxstb[i][j] = max(mxstb[i][j - 1], mxstb[s][j - 1]);
mnstb[i][j] = min(mnstb[i][j - 1], mnstb[s][j - 1]);
}
}
//For the O(1) query of max.
inline long long max_query(long long l, long long r, long long f[MAXN][LOGN]) {
long long s = logx[r - l + 1];
return max(f[l][s], f[r - (1 << s) + 1][s]);
}
//For the O(1) query of min.
inline long long min_query(long long l, long long r, long long f[MAXN][LOGN]) {
long long s = logx[r - l + 1];
return min(f[l][s], f[r - (1 << s) + 1][s]);
}
//Solve the problem.
inline void solve() {
long long l1, r1, l2, r2;
l1 = read(), r1 = read();
l2 = read(), r2 = read();
long long maxa = max_query(l1, r1, mxsta);
long long mina = min_query(l1, r1, mnsta);
long long mxsa = max_query(l1, r1, mxssta);
long long mnba = min_query(l1, r1, mnbsta);
long long maxb = max_query(l2, r2, mxstb);
long long minb = min_query(l2, r2, mnstb);
long long ans = inm;
ans = max(ans, maxa * (maxa >= 0 ? minb : maxb));
ans = max(ans, mina * (mina >= 0 ? minb : maxb));
if (mxsa != inm)
ans = max(ans, mxsa * (mxsa >= 0 ? minb : maxb));
if (mnba != inf)
ans = max(ans, mnba * (mnba >= 0 ? minb : maxb));
printf("%lld\n", ans);
}
int main() {
//Initialization.
init();
//For q times use the solve function.
while (q--)
solve();
return 0;
}
```
by ChampionCyan @ 2024-06-28 10:55:18
@[saixingzhe](/user/652816)
就是这个问题!!!
我的代码把
```cpp
ans = max(ans, maxa * (maxa >= 0 ? minb : maxb));
ans = max(ans, mina * (mina >= 0 ? minb : maxb));
if (mxsa != inm)
ans = max(ans, mxsa * (mxsa >= 0 ? minb : maxb));
if (mnba != inf)
ans = max(ans, mnba * (mnba >= 0 ? minb : maxb));
```
改成
```cpp
if (maxa < 0) {
if (maxb < 0)
ans = mina * maxb;
else
ans = maxa * maxb;
} else if (mina >= 0) {
if (minb >= 0)
ans = maxa * minb;
else
ans = mina * minb;
} else {
if (maxb < 0)
ans = mina * maxb;
else if (minb >= 0)
ans = maxa * minb;
else
ans = max(mnba * minb, mxsa * maxb);
}
```
就过了!
by ChampionCyan @ 2024-06-28 11:06:18
@[wangjingxi_](/user/1133254) @[saixingzhe](/user/652816)
看看[这个](https://www.luogu.com.cn/discuss/840533)!
by ChampionCyan @ 2024-06-28 11:15:34
谢谢大佬,已关。
by wangjingxi_ @ 2024-06-28 19:46:47
@[weah964](/user/1036180) 谢谢,已关
by saixingzhe @ 2024-06-28 20:37:26