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

前缀和 (一维 二维)

前缀和作用:

快速求出原数组中一段数组的和 

思路

1.预处理前缀和数组

2.用公式求区间和

公式:

二维前缀和:


s [ i ] [ j ] += s[ i - 1 ] [ j ] + s[ i ] [ j - 1 ] - s [ i - 1 ] [ j - 1]; 

 

 题型

一维

二维

 题解

一维

#include <iostream>using namespace std;const int N = 100010;int n, m;
int a[N], s[N];int main()
{scanf("%d%d", &n, &m);for (int i = 1; i <= n; i ++ ) scanf("%d", &a[i]);for (int i = 1; i <= n; i ++ ) s[i] = s[i - 1] + a[i]; // 前缀和的初始化while (m -- ){int l, r;scanf("%d%d", &l, &r);printf("%d\n", s[r] - s[l - 1]); // 区间和的计算}return 0;
}

二维

#include <iostream>using namespace std;const int N = 1010;int n, m, q;
int s[N][N];int main()
{scanf("%d%d%d", &n, &m, &q);for (int i = 1; i <= n; i ++ )for (int j = 1; j <= m; j ++ )scanf("%d", &s[i][j]);for (int i = 1; i <= n; i ++ )for (int j = 1; j <= m; j ++ )s[i][j] += s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1];while (q -- ){int x1, y1, x2, y2;scanf("%d%d%d%d", &x1, &y1, &x2, &y2);printf("%d\n", s[x2][y2] - s[x1 - 1][y2] - s[x2][y1 - 1] + s[x1 - 1][y1 - 1]);}return 0;
}

http://www.lryc.cn/news/522701.html

相关文章:

  • 精选算法合集
  • HackMyVM-Klim靶机的测试报告
  • C++内存分布
  • mysql主从复制sql进程中断,报错Tablespace is missing for table ……
  • STM32 FreeRTOS 信号量
  • Codemirror6个人使用心得总结
  • Ruby语言的软件开发工具
  • OpenHarmony API 设计规范
  • ESP8266 AP模式 网页配网 arduino ide
  • OpenCV基础:获取子矩阵的几种方式
  • C++ 之多线程相关总结
  • EF Core全局查询筛选器
  • 【开源免费】基于SpringBoot+Vue.JS欢迪迈手机商城(JAVA毕业设计)
  • Objective-C语言的数据库交互
  • 基于 Spring Boot 和 Vue.js 的全栈购物平台开发实践
  • 笔记(数据运营方向)
  • qt vs ios开发应用环境搭建和上架商店的记录
  • [cg] glDrawBuffers MRT的应用
  • IO模型与NIO基础二
  • 【设计模式】 单例模式(单例模式哪几种实现,如何保证线程安全,反射破坏单例模式)
  • T-SQL语言的数据库交互
  • 【Linux系统】Ext系列磁盘文件系统二:引入文件系统(续篇)
  • 慧集通(DataLinkX)iPaaS集成平台-业务建模之域
  • 【机器学习实战】kaggle 欺诈检测---使用生成对抗网络(GAN)解决欺诈数据中正负样本极度不平衡问题
  • android wifi framework与wpa_supplicant的交互
  • 初学stm32 --- flash模仿eeprom
  • 使用C语言实现栈的插入、删除和排序操作
  • C语言程序环境和预处理详解
  • 基于机器学习随机森林算法的个人职业预测研究
  • 三种文本相似计算方法:规则、向量与大模型裁判