Description
在一个星光摧残的夜晚,蒜头君一颗一颗的数这天上的星星。
蒜头君给在天上巧妙的画了一个直角坐标系,让所有的星星都分布在第一象。天上有 nn 颗星星,他能知道每一颗星星的坐标和亮度。
现在,蒜头君问自己 qq 次,每次他问自己每个矩形区域的星星的亮度和是多少(包含边界上的星星)。
package week2; import java.util.Scanner; /** * @author liangyuanshao * @date 2022/4/30 - 14:49 */ public class Main { public static void main(String[] args) { Scanner s=new Scanner(System.in); int[][] arr=new int[2002][2002]; int n=s.nextInt(); for(int i=0;i<n;i++){ arr[s.nextInt()+1][s.nextInt()+1]+=s.nextInt(); } for(int i=1;i<=2001;i++){ for(int j=1;j<=2001;j++){ arr[i][j]=arr[i][j]+arr[i-1][j]+arr[i][j-1]-arr[i-1][j-1]; } } int k=s.nextInt(); while (k--!=0){ int x1=s.nextInt(),y1=s.nextInt(),x2=s.nextInt(),y2=s.nextInt(); System.out.println(arr[x2+1][y2+1]-arr[x2+1][y1]-arr[x1][y2+1]+arr[x1][y1]); } } }
Experience
数据量少,直接构造长度2002的数组是我没想到的。下次注意输入样例的范围。
这是一道典型的前缀和题目。