- 前缀和
795. 前缀和
package acwing;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class T795 {
public static void main(String[] args) throws Exception{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String[] arr = bf.readLine().split(" ");
int n = Integer.parseInt(arr[0]);
int q = Integer.parseInt(arr[1]);
arr = bf.readLine().split(" ");
int[] nums = new int[n];
int[] sums = new int[n + 1];
for (int i = 0; i < n; i++) {
nums[i] = Integer.parseInt(arr[i]);
sums[i + 1] = sums[i] + nums[i];
}
for (int i = 0; i < q; i++){
arr = bf.readLine().split(" ");
int left = Integer.parseInt(arr[0]);
int right = Integer.parseInt(arr[1]);
System.out.println(sums[right] - sums[left - 1]);
}
bf.close();
}
}
- 子矩阵和
796. 子矩阵的和
package acwing;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
public class T796 {
public static void main(String[] args) throws Exception{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String[] arr = bf.readLine().split(" ");
int n = Integer.parseInt(arr[0]);
int m = Integer.parseInt(arr[1]);
int q = Integer.parseInt(arr[2]);
int[][] nums = new int[n][m];
int[][] sums = new int[n + 1][m + 1];
for (int i = 0; i < n; i++){
arr = bf.readLine().split(" ");
for (int j = 0; j < m; j++){
nums[i][j] = Integer.parseInt(arr[j]);
sums[i + 1][j + 1] = sums[i][j + 1] + sums[i + 1][j] + nums[i][j] - sums[i][j];
}
}
for (int i = 0; i < q; i++){
arr = bf.readLine().split(" ");
int x1 = Integer.parseInt(arr[0]);
int y1 = Integer.parseInt(arr[1]);
int x2 = Integer.parseInt(arr[2]);
int y2 = Integer.parseInt(arr[3]);
System.out.println(sums[x2][y2] - sums[x1 - 1][y2] - sums[x2][y1 - 1] + sums[x1 - 1][y1 - 1]);
}
}
}