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

一维差分数组

2.一维差分 - 蓝桥云课

问题描述

给定一个长度为 n 的序列 a

再给定 m 组操作,每次操作给定 3 个正整数 lrd,表示对 a_{l} 到 a_{r} 中的所有数增加 d

最终输出操作结束后的序列 a

​Update​​: 由于评测机过快,nm 于 2024-12-09 从 102 加强至 2×105,杜绝暴力通过本题。

输入格式

第一行输入两个正整数 nm。(1≤n,m≤2×105)

第二行输入 n 个正整数 a。(1≤i≤n,1≤ai​≤104)。

接下来 m 行,每行输入 3 个正整数 lrd。(1≤l≤r≤n,−104≤d≤104)。

输出格式

输出 n 个整数,表示操作结束后的序列 a

样例输入

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;
const int N = 2e6+10;
int a[N],diff[N];
int main() 
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int n,m;
	cin >> n >> m;
	for(int i = 1 ; i <= n ; i++)
	{
		cin >> a[i];
		diff[i] = a[i] - a[i-1];
	}
	while(m--)
	{
		int l,r,d;
		cin >> l >> r >> d;
		diff[l] += d;
		if(r + 1 <= n)
		diff[r+1] -= d;
	}
	//复原
	for(int i = 1 ; i <= n ; i++)
	diff[i] += diff[i-1]; 
	for(int i = 1 ; i <= n ; i++)
	cout << diff[i] << " ";

    return 0;
}

相关文章:

  • 【AI提示词】长期主义助手提供规划支持
  • MySQL查看binlog执行情况
  • 【C++初学】C++核心编程技术详解(二):类与继承
  • 51单片机烧录程序演示教程
  • 从零开始搭建一个 Vue 3 + Vite 的项目
  • Web实现权限控制的原理
  • DDR管脚违例
  • 大模型Agent炼金术:优化路径与未来方向
  • Linux 系统中从源码编译安装软件
  • 亚洲区域健康人群免疫细胞marker
  • golang 采用use-go/onvif获取RTSP流
  • 【有效】运行Anaconda Navigator报错:This application failed to start no Qt的解决办法
  • 基于RV1126开发板实现二维码识别方案
  • c++知识点
  • 单细胞Seurat标准分析流程R语言封装
  • PostgreSQL 17深度解析(从17.0-17.4)
  • 【数学建模】
  • ch07课堂参考代码
  • 在WPS中通过JavaScript宏(JSA)调用DeepSeek官网API优化文档教程
  • AD9253 LVDS 高速ADC驱动开发
  • 2015做哪些网站能致富/网站seo方案案例
  • 做网站用什么语言好/win10优化大师官网
  • 模拟网站效果/宁波网站建设优化企业
  • 专业型企业网站有哪些/推广赚钱软件排行
  • 自助服务器网站建设/电商关键词排名优化怎么做?
  • 广州计算机培训班/林云seo博客