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

蓝桥杯好题推荐---二位前缀和

🌈个人主页:羽晨同学 

💫个人格言:“成为自己未来的主人~” 

题目链接

【模板】二维前缀和https://ac.nowcoder.com/acm/problem/226333

解题思路

在这道题目当中,是要我们输出以x1,y1为左上角,x2,y2为右下角的子矩阵的和,其实这个首先很简单的思路,就是可以进行枚举,但是枚举的话,时间复杂度会超过题目的要求。第二个就是利用前缀和的方法,我们的前缀和数组f[i][j]中存放的是从(0,0)到(i,j)的所有的数的和。

那我们应该怎么设置这个二维数组呢?

这个的面积,我们可以表示为(A+C)+(A+B)-A+x

那我们怎么表示要查找的这片区域的面积呢?

 

 

	cout<<f[x2][y2]-f[x1-1][y2]-f[x2][y1-1]+f[x1-1][y1-1]<<endl;

除了这些以外,我们应该还要注意数据的范围。

当我们数字求和的时候,可能会超出Int的类型范围,所以,我们应采用long long 类型。

代码解决

#include<iostream>
using namespace std;
const int N  =1010;
typedef long long LL;
LL f[N][N];//前缀和存放数组 
int main()
{
	int n,m,q;
	cin>>n>>m>>q;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			LL x;cin>>x;
			f[i][j]=f[i-1][j]+f[i][j-1]-f[i-1][j-1]+x;
		}
	}
	while(q--)
	{
		int x1,y1,x2,y2;
		cin>>x1>>y1>>x2>>y2;
		cout<<f[x2][y2]-f[x1-1][y2]-f[x2][y1-1]+f[x1-1][y1-1]<<endl;
	}
	return 0;	
} 

 好了,今天的内容就到这里,我们明天再见。 

相关文章:

  • Flask多参数模版使用
  • AI:Machine Learning Data Science
  • 稳定运行的以PostgreSQL数据库为数据源和目标的ETL性能变差时提高性能方法和步骤
  • 图解AUTOSAR_CP_NetworkManagementInterface
  • 人工智能之数学基础:从线性变换理解矩阵范数和矩阵行列式
  • JavaScript 中的包装类型:概念、作用与使用场景
  • spring启动流程
  • 集成学习(上):Bagging集成方法
  • C# ManualResetEvent‌的高级用法
  • Pytorch学习笔记
  • 书摘 ASP.NET Core技术内幕与项目实战:基于DDD与前后端分离
  • 案例驱动的 IT 团队管理:创新与突破之路:第二章 团队组建:从人才画像到生态构建-2.2.1星型架构 vs 网状架构对比
  • 华为中小型企业项目案例
  • Three.js学习
  • 5分钟快速申请一个EDU教育邮箱
  • Python 编程题 第十节:重复数字、相邻字符去重、2的幂、最长公共子串、冒泡排序
  • 【2025年3月最新】Cities_Skylines:城市天际线1全DLC解锁下载与教程
  • vue中父组件与子组件的created方法执行顺序
  • Linux内核实时机制28 - RT调度器11 - RT 组调度
  • C# PaddleOCR字符识别
  • 重庆网站设计制作案例/下载百度2023最新版
  • 做营销的一般逛哪些网站/北京网站优化常识
  • 做网站泰安/看广告赚钱的平台
  • 给wordpress创建ftp/苏州seo报价
  • 抚州律师网站建设/网络营销的五个发展阶段
  • 设计网站公司哪里好/项目外包平台