前情。
目前有一份代码:
#pragma GCC optimize(2)
#include <bits/stdc++.h>
int read() {
int res = 0;
bool f = true;
char ch = getchar();
for (; ch > '9' || ch < '0'; ch = getchar())
if (ch == '-') f = false;
for (; ch <= '9' && ch >= '0'; ch = getchar())
res = (res << 3) + (res << 1) + (ch ^ 48);
return f ? res : ~res + 1;
}
const int N = 2002;
int n, a[N], res, t;
int las, nowl, nowr;
inline int Calc(int* l, int* r) {
nowl = *l, nowr = *r, t = 0;
while (l + 1 < r) {
if (nowl == nowr) {
nowl = *++l, nowr = *--r;
} else {
++t;
if (nowl < nowr)
nowr -= nowl, nowl = *++l;
else
nowl -= nowr, nowr = *--r;
}
}
if (nowl != nowr) ++t;
return t;
}
int T, i, j;
void Main() {
n = read(), res = 0;
for (int i = 1; i <= n; ++i) a[i] = read();
for (i = 1; i <= n; ++i)
for (j = i + 1; j <= n; ++j) res += Calc(a + i, a + j);
printf("%d\n", res);
return;
}
signed main() {
for (T = read(); T--; Main());
return 0;
}
输入只要不用 cin,scanf、各式快读都行,开不开 O2 无所谓,必须使用 C++20 (GCC 13-64) 语言选项,都能 AC。最快的使用神奇快读、开 O2 的一份时间 4910 ms。
还能 hack 吗(
(虽然但是话说这个复杂度不是对的吗)