当前位置: 首页 > 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;
}

http://www.dtcms.com/a/126536.html

相关文章:

  • 【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驱动开发
  • 恐龙专利及商标维权行动,已获批TRO并冻结资金
  • 从一堆新闻正文中,提取出“事实型句子(fact)”,并保存到新文件中
  • 单例用例(C++)简单分析
  • list的常见接口使用
  • 榕壹云在线商城系统:基于THinkPHP+ Mysql+UniApp全端适配、高效部署的电商解决方案
  • 【AI News | 20250411】每日AI进展
  • maven导入本地jar示例
  • KWDB创作者计划—KWDB关系库与时序库混搭
  • SQL 外键(Foreign Key)详细讲解
  • NHANES指标推荐:aMED