捞(CF2004 F N^3 复杂度
  • 板块灌水区
  • 楼主Heldivis
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/8/17 17:16
  • 上次更新2024/8/17 20:33:58
查看原帖
捞(CF2004 F N^3 复杂度
732379
Heldivis楼主2024/8/17 17:16

前情。

目前有一份代码:

#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 吗(

(虽然但是话说这个复杂度不是对的吗)

2024/8/17 17:16
加载中...