Advertisement
wym1111

Untitled

Jan 24th, 2024
813
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.78 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int n, m;
  5. int a[102][102];
  6. int sum[102][102]; // sum[x][y] 表示第x行y列左上角的和
  7. int x_1, y_1, x_2, y_2;
  8.  
  9. int main() {
  10.     cin >> n >> m;
  11.     for (int i = 1; i <= n; i ++) {
  12.         for (int j = 1; j <= m; j ++) {
  13.             cin >> a[i][j];
  14.         }
  15.     }
  16.     // 预处理二维前缀和
  17.     for (int i = 1; i <= n; i ++) {
  18.         int tmp = 0;
  19.         for (int j = 1; j <= n; j ++) {
  20.             tmp += a[i][j];
  21.             sum[i][j] = sum[i - 1][j] + tmp;
  22.         }
  23.     }
  24.    
  25.     cin >> x_1 >> y_1 >> x_2 >> y_2;
  26.    
  27.     int s1 = sum[x_2][y_2]; // 绿色矩形
  28.     int s2 = sum[x_1 - 1][y_2]; // 橙色矩形1
  29.     int s3 = sum[x_2][y_1 - 1]; // 橙色矩形2
  30.     int s4 = sum[x_1 - 1][y_1 - 1]; // 青色矩形
  31.    
  32.     int s = s1 - (s2 + s3) + s4; //红色目标子矩阵
  33.    
  34.     cout << s;
  35.    
  36.     return 0;
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement