差分+前缀和

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

**题目:

输入一个长度为 n 的整数序列。

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

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

输入格式:

第一行包含两个整数 n 和 m。

第二行包含 n 个整数,表示整数序列。

接下来 m 行,每行包含三个整数 l,r,c,表示一个操作。

输出格式:

共一行,包含 n 个整数,表示最终序列。

数据范围:

1≤n,m≤100000,

1≤l≤r≤n,

−1000≤c≤1000,

−1000≤整数序列中元素的值≤1000

输入样例:

6 3

1 2 2 1 2 1

1 3 1

3 5 1

1 6 1

输出样例:

3 4 5 3 4 2**

源码:

include <bits/stdc++.h>

using namespace std;

int main()

{

int n,m;
cin >> n>>m;
int arr[n],brr[n+1]={0};
for (int i = 0; i < n; i ++ )
{
cin >> arr[i];
}
for (int j = 0; j < m; j ++ )
{
int l,r,c;
cin >> l>>r>>c;
    brr[l-1]+=c;
    brr[r]-=c;
}
for(int i=1;i<n;i++)
{
    brr[i]=brr[i]+brr[i-1];
}
for(int i=0;i<n;i++)
{
    arr[i]=arr[i]+brr[i];
cout << arr[i]<<" ";
}
return 0;

}

在文章末尾总结一下差分的诀窍吧,(初学,勿喷):

第一:首先定义一个空数组b,初始值全为零;(b的数组下标值要比原数组a的范围大于一,即a[n],b[n+1]);

第二:对b进行题目中的操作;

第三:求操作后的b的前缀和;

第四:原数组a的每一项加上b相对应的每一项;

第五:输出几位答案;

目录
相关文章
|
存储 运维 算法
GFS分布式文件系统
GFS分布式文件系统
274 0
|
开发工具 git Ruby
设置 git/npm/bower/pip/gem镜像或代理
这是一篇我很久以前发表在博客园的文章,因为最近更新了机子的环境,又要重新设置一次环境,现在就体验到经常写文章的好处了,毕竟人老了好多东西记不住,还是得靠博客。
3008 0
|
监控 安全 物联网
智能家居安全:保护您的家庭免受网络威胁##
随着物联网 (IoT) 技术的迅猛发展,越来越多的家庭设备连接到互联网,带来便利的同时,也增加了网络安全风险。本文将深入探讨智能家居设备的常见安全漏洞、潜在威胁以及防护措施,帮助您了解如何保护家庭免受网络威胁。 ##
|
Shell Linux API
C语言在linux环境下执行终端命令
本文介绍了在Linux环境下使用C语言执行终端命令的方法。首先,文章描述了`system()`函数,其可以直接执行shell命令并返回结果。接着介绍了更强大的`popen()`函数,它允许程序与命令行命令交互,并详细说明了如何使用此函数及其配套的`pclose()`函数。此外,还讲解了`fork()`和`exec`系列函数,前者创建新进程,后者替换当前进程执行文件。最后,对比了`system()`与`exec`系列函数的区别,并针对不同场景推荐了合适的函数选择。
|
消息中间件 前端开发 NoSQL
面试官:如何实现线程池任务编排?
面试官:如何实现线程池任务编排?
119 1
面试官:如何实现线程池任务编排?
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的高校毕业设计信息管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的高校毕业设计信息管理系统附带文章源码部署视频讲解等
146 1
|
Java Spring 容器
Spring循环依赖问题之两个不同的Bean A,导致抛出异常如何解决
Spring循环依赖问题之两个不同的Bean A,导致抛出异常如何解决
137 0
|
机器学习/深度学习 编解码 人工智能
R-CNN、SPP-Net、Fast R-CNN…你都掌握了吗?一文总结目标检测必备经典模型(2)
R-CNN、SPP-Net、Fast R-CNN…你都掌握了吗?一文总结目标检测必备经典模型
350 0