洛谷P8218 【深进1.例1】求区间和 【前缀和】【一阶差分】【二阶差分】

文章目录

    • 前缀和
      • 前缀和例题
        • 题意
    • 差分
      • 差分例题及code↓
        • 模版例题
          • 输入样例:
          • 输出样例:
        • code↓

前缀和

前缀和定义: 前缀和数组的第 i i i 位即为原数组 1 1 1 ~ i i i 位的和

原数组:    1   2   3   4   5
前缀和数组:1   3   5   9   14

我们由此可以推导出公式: a n s [ i ] = a [ i ] + a n s [ i − 1 ] ans[i]=a[i]+ans[i-1] ans[i]=a[i]+ans[i1]

其中 a n s [ i − 1 ] ans[i-1] ans[i1]即为前面( 1 1 1 ~ i − 1 i-1 i1)的所有数的总和,将 a n s [ i − 1 ] + a [ i ] ans[i-1]+a[i] ans[i1]+a[i] 即是原数组 1 1 1 ~ i i i 位的总和

	for(int i=1;i<=n;i++) cin>>a[i],ans[i]=a[i]+ans[i-1];
//其中ans[i]是前缀和数组,a[i]是原数组

前缀和例题

P8218 【深进1.例1】求区间和

题意

给定 n n n 个正整数组成的数列 a 1 , a 2 , ⋯ , a n a_1, a_2, \cdots, a_n a1,a2,,an m m m 个区间 [ l i , r i ] [l_i,r_i] [li,ri],分别求这 m m m 个区间的区间和。

对于所有测试数据, n , m ≤ 1 0 5 , a i ≤ 1 0 4 n,m\le10^5,a_i\le 10^4 n,m105,ai104

#include <bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
long long n,m,a[maxn]={},sum[maxn]={};
int main(){cin>>n;for(int i=1;i<=n;i++){cin>>a[i];sum[i]=sum[i-1]+a[i];//建立前缀和数组}cin>>m;for(int i=1;i<=m;i++){long long l,r;//求l~r的区间和cin>>l>>r;cout<<sum[r]-sum[l-1]<<endl;//注意是r~(l-1)}return 0;
}

差分

差分定义: 我们令 a a a b b b 的差分数组,则 a a a 的前缀和数组为 b b b

我们由此可以运用等式的性质,由前缀和公式推导出差分公式 a [ i ] = a n s [ i ] + a n s [ i − 1 ] a[i]=ans[i]+ans[i-1] a[i]=ans[i]+ans[i1]

	for(int i=1;i<=n;i++) cin>>a[i],ans[i]=a[i]+ans[i-1];for(int i=1;i<=n;i++) cha[i]=ans[i]-ans[i-1];
//其中ans[i]是前缀和数组,a[i]是原数组,cha[i]是差分数组

我们来举例解释一下↓:

原数组:              1   2   3   4   5
前缀和数组:          1   3   5   9   14
差分数组:            1   1   1   1   1
差分数组的前缀和数组:1   2   3   4   5

由此我们可以得知差分数组的前缀和数组即为原数组

若是将差分数组cha的cha[l]+x,cha[r+1]-x,那么原数组a的a[l]~a[r]会依次加上x

原数组:              1   2   3   4   5
前缀和数组:          1   3   5   9   14
差分数组:            1   1   1   1   1
差分数组的前缀和数组:1   2   3   4   5

我们来举例解释一下↓:

原数组:              1   2   3   4   5
前缀和数组:          1   3   5   9   14
差分数组:            1   1+2 1   1   1-2
差分数组:            1   3   1   1   -1
差分数组的前缀和数组:1   4   5   6   5
我们令x=2,l=2,r=4,
那么我们需要达到的操作是:将原数组的l~r位加上2,cha[l]+x,cha[r+1]-x之后,
cha[]的前缀和数组达成了需要达成的操作

差分例题及code↓

这道题目,真的很基础QWQ

模版例题

输入一个长度为 n n n 的整数序列。接下来输入 T T T 个操作,每个操作包含三个整数 l , r , c l,r,c l,r,c,表示将序列中 [ l , r ] [l,r] [l,r] 之间的每个数加上 c c c

请你输出进行完所有操作后的序列。

输入样例:
6 3
1 2 2 1 2 1
1 3 1
3 5 1
1 6 1
输出样例:
3 4 5 3 4 2
code↓
#include <bits/stdc++.h>
using namespace std;
const int maxn=2e6+10;
int	input[maxn],cha[maxn],n,T;
int main(){cin>>n>>T;for(int i=1;i<=n;i++)cin>>input[i];for(int j=1;j<=n;j++) cha[j]=input[j]-input[j-1];while(T--){int l,r,c;cin>>l>>r>>c;cha[l]=cha[l]+c,cha[r+1]=cha[r+1]-c;}int sum=0;for(int i=1;i<=n;i++) sum+=cha[i],cout<<sum<<" ";return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/765286.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BGP聚合:

BGP聚合&#xff1a; 1、功能&#xff1a; 1.1 可以指向BGP邻居发送聚合后的路由条目&#xff0c;从而减少路由表项&#xff08;优化&#xff09;&#xff1b; 1.2 如果明细路由产生震荡&#xff0c;那么聚合后的路由不受影响。 1.3 简化路由表项&#xff0c;达到节省设备资源…

Linux systemd详解

1、概念 1.1 systemd systemd 是一个用于管理 Linux 系统启动过程和系统服务的系统和服务管理器。它被设计为取代传统的 System V init 系统&#xff0c;提供了更快的启动时间、并行启动服务、更好的日志记录和更强大的管理功能。 1.2 unit Unit 是 systemd 中所有配置文件…

springboot接口跨域问题解决

1、实现WebMvcConfigurer接口package com.common.config;import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigur…

基于ssm校园美食交流系统论文

目 录 摘 要 1 前 言 3 第1章 概述 4 1.1 研究背景 4 1.2 研究目的 4 1.3 研究内容 4 第二章 开发技术介绍 5 2.1Java技术 6 2.2 Mysql数据库 6 2.3 B/S结构 7 2.4 SSM框架 8 第三章 系统分析 9 3.1 可行性分析 9 3.1.1 技术可行性 9 3.1.2 经济可行性 10 3.1.3 操作可行性 10…

字符函数与字符串函数

目录 一.字符分类函数 二.字符转化函数 三.strlen函数 函数的介绍 strlen函数的模拟实现 1.计算器法 2.递归 三.指针-指针的方式 四.strcpy函数 函数介绍 strcmp的模拟实现 五.strcat函数 函数介绍 strcat的模拟实现 六.strcmp函数 函数介绍 返回值 strcm…

做项目的一些感悟

一、交接&#xff1a; 1.不交接好千万不要松口让对方走。 2.资料、文档、注释、账号密码、项目关联信息、项目源代码、交接人联系电话、等信息必须齐全完整。 3.如果项目有问题或者交接人与公司有纠纷&#xff0c;这个项目尽量不要接。 4.不要随意修改交接代码&#xff0c;…

Java中的包装类

Java中的包装类 一、包装类是什么&#xff1f;二、对应关系&#xff1a;三、举例说明&#xff1a;Integer构造器&#xff1a;包装类特有的机制&#xff1a;自动装箱 自动拆箱常用方法 总结 一、包装类是什么&#xff1f; 以前定义变量&#xff0c;经常使用基本数据类型&#x…

Mysql学习--深入探究索引和事务的重点要点与考点

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …

自动驾驶---Motion Planning之轨迹Path优化

1 背景 在之前的几篇文章中,不管是通过构建SL图《自动驾驶---Motion Planning之Path Boundary》,ST图《自动驾驶---Motion Planning之Speed Boundary》,又或者是构建SLT图《自动驾驶---Motion Planning之构建SLT Driving Corridor》,最终我们都是为了得到boundary的信息。 …

OpenCV实战:智能人脸识别打卡系统

1、介绍 目前&#xff0c;很多公司对员工的考勤同时通过打卡机或者钉钉之类的打卡软件&#xff0c;传统的员工打卡方式有很多&#xff0c;例如点名、签字、刷卡、指纹等等 然而随机机器视觉、计算机视觉的不断发展&#xff0c;算力的不断提升&#xff0c;人工智能对人脸检测的…

如何用联合(共用体)union验证系统大小端

一&#xff1a;思路 由联合体的特点&#xff0c;可知上图&#xff0c;char c 和 int i 共用四个字节&#xff0c;假设是小端&#xff0c;则由左到右是低地址到高地址&#xff0c;四个字节的内容如图所示01 00 00 00 代码展示&#xff1a; 如果第一个字节是1&#xff0c;则证明…

python练习01

1.单击 import win32com.client import time import pyautogui import random#随机数 sj random.randint(1, 3)time.sleep(sj) dmwin32com.client.Dispatch(dm.dmsoft)#调用大漠插件,获取大漠对象 print(dm.ver()) #显示版本3.1233表示调用成功# 设置大漠插件的路径 dm.SetP…

洛谷入门——P2669 [NOIP2015 普及组] 金币

[NOIP2015 普及组] 金币 题目背景 NOIP2015 普及组 T1 题目描述 国王将金币作为工资&#xff0c;发放给忠诚的骑士。第一天&#xff0c;骑士收到一枚金币&#xff1b;之后两天&#xff08;第二天和第三天&#xff09;&#xff0c;每天收到两枚金币&#xff1b;之后三天&…

<Linux> 线程池

目录 前言&#xff1a; 一、线程池概念 &#xff08;一&#xff09;池化技术 &#xff08;二&#xff09;优点 &#xff08;三&#xff09;应用场景 二、线程池的实现 &#xff08;一&#xff09;线程池_V1&#xff08;朴素版&#xff09; &#xff08;二&#xff09;线…

Nginx发布之后可以使用IP访问,不能使用localhost访问, Nginx发布之后可以使用localhost访问,不能使用IP访问,

如标题所说 Nginx发布之后可以使用IP访问&#xff0c;不能使用localhost访问&#xff0c; Nginx发布之后可以使用localhost访问&#xff0c;不能使用IP访问&#xff0c; 修改配置文件也没有用 清除浏览器缓存数据

配置DHCPV6

组网需求 如果大量的企业用户IPv6地址都是手动配置&#xff0c;那么网络管理员工作量大&#xff0c;而且可管理性很差。管理员希望实现公司用户IPv6地址和网络配置参数的自动获取&#xff0c;便于统一管理&#xff0c;实现IPv6的层次布局。 图1 DHCPv6服务器组网图 配置思路 …

自动化改变金融科技文档生命周期

金融科技公司可能处于软件开发的最前沿&#xff0c;但即使是最先进的系统也必须能够支持金融服务领域采用的一系列文档密集型程序。因此&#xff0c;绝大多数金融科技企业都使用数字文档管理解决方案&#xff0c;无论是内部构建的还是由第三方供应商开发的。金融科技公司可以通…

JavaScript 权威指南第七版(GPT 重译)(七)

第十六章&#xff1a;用 Node 进行服务器端 JavaScript Node 是 JavaScript 与底层操作系统的绑定&#xff0c;使得编写 JavaScript 程序读写文件、执行子进程和在网络上通信成为可能。这使得 Node 作为以下用途变得有用&#xff1a; 现代替代 shell 脚本的方式&#xff0c;不…

UI自动化测试面试题小结

列举web自动化中常见的元素定位方式&#xff1f; id&#xff1a;根据id来获取元素&#xff0c;返回单个元素&#xff0c;id值一般是唯一的&#xff1b; name&#xff1a;根据元素的name属性定位&#xff1b; tagName&#xff1a;根据元素的标签名定位&#xff1b; className…

深入理解XML技术(看这一篇就够了)

目录&#xff1a; XMLXML的功能XML基本语法XML组成部分约束DTD约束Schema约束 Jsoup解析器DOMSAXXML常见解析器DOM4JJsoupXPath解析 XML 概念 XML&#xff08;Extensible Markup Language&#xff09;&#xff1a;可扩展标记语言 可扩展&#xff1a;标签都是自定义的。 发展历…