树状数组20pts求助
查看原帖
树状数组20pts求助
555950
wdgm4楼主2025/8/2 09:54

RT。全部MLE。

import java.io.*;
import java.util.*;

public class Main {
  static class TreeArr {
    private long[][][] t;
    private int n, m;

    public TreeArr(int n, int m) {
      this.n = n;
      this.m = m;
      this.t = new long[n + 10][m + 10][110];
    }

    private int lowbit(int x) {
      return x & (-x);
    }

    public void add(int x, int y, int num, int k) {
      for (int i = x; i <= n; i += lowbit(i)) {
        for (int j = y; j <= m; j += lowbit(j)) {
          t[i][j][num] += k;
        }
      }
    }

    private long query(int x, int y, int num) {
      long ans = 0;
      for (int i = x; i > 0; i -= lowbit(i)) {
        for (int j = y; j > 0; j -= lowbit(j)) {
          ans += t[i][j][num];
        }
      }
      return ans;
    }

    public long queryarr(int x, int xx, int y, int yy, int num) {
      long ans = 0;
      ans =
          query(xx, yy, num)
              - query(xx, y - 1, num)
              - query(x - 1, yy, num)
              + query(x - 1, y - 1, num);
      return ans;
    }
  }

  public static void main(String args[]) {
    Scanner cin = new Scanner(System.in);
    int n, m;
    n = cin.nextInt();
    m = cin.nextInt();
    int[][] a = new int[n + 10][m + 10];
    TreeArr T = new TreeArr(n, m);
    for (int i = 1; i <= n; i++) {
      for (int j = 1; j <= m; j++) {
        a[i][j] = cin.nextInt();
        T.add(i, j, a[i][j], 1);
      }
    }
    int q = cin.nextInt();
    for (int i = 1; i <= q; i++) {
      int opt = cin.nextInt();
      if (opt == 1) {
        int x = cin.nextInt(), y = cin.nextInt(), k = cin.nextInt();
        T.add(x, y, a[x][y], -1);
        a[x][y] = k;
        T.add(x, y, k, 1);
      } else {
        int x = cin.nextInt(),
            xx = cin.nextInt(),
            y = cin.nextInt(),
            yy = cin.nextInt(),
            k = cin.nextInt();
        long ans = T.queryarr(x, xx, y, yy, k);
        System.out.println(ans);
      }
    }
  }
}

,,,

注:用 java 写的,初学 java,它是不是因为有什么内存浪费之类的的东西会导致MLE?QWQ
2025/8/2 09:54
加载中...