当前位置: 首页 > article >正文

前缀和例题:子矩阵的和AcWing796-Java版


//前缀和模板提,在读入数据的时候就可以先算好前缀和的大小
//计算前缀的时候用:g[i][j] = g[i][j-1] + g[i-1][j] - g[i-1][j-1] + Integer.parseInt(init[j-1]);
//计算结果的时候用:g[x2][y2] - g[x1 - 1][y2]- g[x2][y1-1] + g[x1 -1][y1 - 1] + "\n"
//一些重复加的地方都需要减掉,如计算前缀和的时候g[i-1][j-1]包括在了前面的g[i][j-1] + g[i-1][j],多减去一次
//g[x1 - 1][y1 - 1]也被包括在前面两项表达式,只需减去一次

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main{
	static int n,m,q;
	static int N = 1010;
	static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
	static BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
	
	static int[][] g = new int[N][N];
	
	public static void main(String[] args) throws IOException{
		String[] init = in.readLine().split(" ");
		n = Integer.parseInt(init[0]);
		m = Integer.parseInt(init[1]);
		q = Integer.parseInt(init[2]);
		
		for(int i = 1;i <= n;i ++) {
			init = in.readLine().split(" ");
			for(int j = 1;j <= m;j ++) {
				g[i][j] = g[i][j-1] + g[i-1][j] - g[i-1][j-1] + Integer.parseInt(init[j-1]);
			}
		}
		
		while(q-- > 0) {
			init = in.readLine().split(" ");
			int x1 = Integer.parseInt(init[0]);
			int y1 = Integer.parseInt(init[1]);
			int x2 = Integer.parseInt(init[2]);
			int y2 = Integer.parseInt(init[3]);
			out.write(g[x2][y2] - g[x1 - 1][y2]- g[x2][y1 - 1] + g[x1 -1][y1 - 1] + "\n");
		}
		in.close();
		out.flush();
	}
	
}

前缀和例题:一维版前缀和

进阶版:二维前缀和-2 


http://www.kler.cn/a/161283.html

相关文章:

  • 代码随想录Day56 108. 冗余连接,109. 冗余连接II。
  • Pytorch | 利用AI-FGTM针对CIFAR10上的ResNet分类器进行对抗攻击
  • Java技术专家视角解读:SQL优化与批处理在大数据处理中的应用及原理
  • SDMTSP:粒子群优化算法PSO求解单仓库多旅行商问题,可以更改数据集和起点(MATLAB代码)
  • Odoo 免费开源 ERP:通过 JavaScript 创建对话框窗口的技术实践分享
  • Fuel库实战:下载失败时的异常处理策略
  • Spark - 输出parqute文件
  • 漫谈Uniapp App热更新包-Jenkins CI/CD打包工具链的搭建
  • 【刷题日志】牛客 HJ73 计算日期到天数转换
  • Canvas鼠标画线
  • java字符串String类的常用方法
  • Swift 中 User Defaults 的读取和写入
  • 商家门店小程序怎么做?门店小程序的优势和好处
  • Docker 一些设置
  • zabbix配置snmp trap--使用snmptrapd和Bash接收器--图文教程
  • Android启动界面之isTaskRoot的妙用及Deeplink的处理
  • 从文字到使用,一文读懂Kafka服务使用
  • macOS 13.6上Sublime无法使用Package Control问题
  • Vue3 Element-Plus 一站式生成动态表单:简化前端开发流程
  • 浅谈https
  • jQuery的入口函数
  • Java毕业设计源码—vue+SpringBoot图书借阅管理图书馆管理系统
  • 10_企业架构NOSQL数据库之MongoDB
  • [ffmpeg] find 编码器
  • 最新GM/T 0126-2023《HTML密码应用置标语法》等25项密码行业标准
  • QML优化,当列表数据过多时,切换tab可能会导致卡顿的情况。