为何 CE?
查看原帖
为何 CE?
677234
FstAutoMaton楼主2023/11/27 13:28

RT,看编译信息应该是数组开大了,但我算了一下只有 112 MB 啊(而且还是往上咕的)

code:

#include <bits/stdc++.h>

using namespace std;
using LL = long long;
using Pll = pair<LL, int>;

const int kMaxN = 1e6 + 5, kL = 21;

int f[kL][kMaxN], d[kMaxN], fa[kMaxN], a[kMaxN], Log[kMaxN] = {-1}, n, q;
Pll s[kMaxN] = {{-1, 1}};
LL ans, cnt;
vector<int> v[kMaxN];

int F(int x) {
  return fa[x] == x ? x : fa[x] = F(fa[x]);
}

int M(int x, int y) {
  return s[x].first * s[y].second > s[y].first * s[x].second ? x : y;
}

void I() {
  for (int i = 1; i < kL; i++) {
    for (int j = 1; j + (1 << i) - 1 < kMaxN; j++) {
      f[i][j] = M(f[i - 1][j], f[i - 1][j + (1 << i)]);
    }
  }
}

void D(LL x, LL y, LL &l, LL &r, LL pre) {
  l = (x * pre + l - 1) % n + 1;
  r = (y * pre + r - 1) % n + 1;
  if (l > r) {
    swap(l, r);
  }
}

LL Q(int l, int r) {
  int x = Log[r - l + 1];
  return M(f[x][l], f[x][r - (1 << x) + 1]);
}

int main() {
  freopen(".out", "w", stdout);
  ios ::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  cin >> n >> q;
  for (int i = 1; i <= n; i++) {
    cin >> a[i];
    v[a[i]].push_back(i);
  }
  for (int i = 1; i < kMaxN; i++) {
    Log[i] = Log[i / 2] + 1;
    for (int p : v[i]) {
      fa[p] = p, d[p] = 1;
      ans++, cnt++;
      if (fa[p - 1]) {
        int x = F(p - 1), y = F(p);
        ans += 2LL * d[x] * d[y];
        fa[y] = x, d[x] += d[y];
        cnt--;
      }
      if (fa[p + 1]) {
        int x = F(p + 1), y = F(p);
        ans += 2LL * d[x] * d[y];
        fa[y] = x, d[x] += d[y];
        cnt--;
      }
    }
    s[i] = {ans, i};
    f[0][cnt] = M(f[0][cnt], i);
  }
  I();
  for (LL a, b, l, r, pre = 0; q; q--) {
    cin >> a >> b >> l >> r;
    D(a, b, l, r, pre);
    LL ans = Q(l, r);
    if (ans == 0) {
      cout << "-1 -1\n"
           << l << " " << r << " " << pre % n << "\n";
      pre = 1;
    } else {
      cout << s[ans].first << " " << ans << "\n"
           << l << " " << r << " " << pre % n << "\n";
      pre = s[ans].first;
    }
  }
  return 0;
}
2023/11/27 13:28
加载中...