TT's Magic Cat -- 差分

2023-05-16

题意
TT 有一只猫 ,它从 世界地图 选了 n 个城市,用 ai 表示每个城市的资产 。
猫会给出几个操作, 区间 [ l , r ] 的城市资产都加 c 。在q次操作后,输出所有城市的资产。

Input
第一行有两个数 n, q (1<=n,q<=2*10^5) ,n表示城市的个数,q表示操作次数。
第二行包含n个数,分别代表每个城市的资产ai。(-10^6 <=ai<=10^6)
接下来q行,每一行代表一个操作, l ,r ,c
(1≤l≤r≤n,−10^5 ≤c≤ 10^5)(1≤ l ≤ r ≤n,−10^5 ≤ c ≤ 10^5)

output
每个城市最后的资产

Examples
在这里插入图片描述

解题思路
1.拒绝暴力求解,因为数据太大,肯定超时。
2.利用差分的方法。

假设原数组为A,差分数组为B,范围【1,n】
那么 B[1] = A[1]
B[i] = A[i] - A[i-1]

差分的性质
1.SUM{ B[1~i] } = A[i] //累加B[ 1~ i ] = A[i]
2.A[L] ~ A[R] 均加上c 等价于 B[L] += c,B[R+1] -=c

关于第2 点的解释理解: B[L] 加上 c之后,A[L] =SUM{B[1~L]} ,我们可以知道 ,从L开始,往后的A 都会加上c (因为 B[L] 加了c)。
然后在 B[R+1] 减 c ,是为了和 B[L] 加的c抵消,从 B[R]往后,A 的值都会加c减c,所以不变。
即,操作了B,就相当于操作了一堆A,这显然能够提高我们的速度。

代码实现

#include<cstdio>
const int Max = 200100;
long long a[Max];
long long l , r , n , q , c;
long long b[Max];

int main()
{	
	scanf("%lld %lld",&n,&q);
	for( long long i =1 ; i<=n ;i++) scanf("%lld",&a[i]);;   //1到n 
	//预处理 
	for( long long i=1 ; i<=n ; i++) b[i] = a[i] - a[i-1];
//	for( int i=1;i<=n;i++)
//	cout<<b[i]<<" ";
	
	for ( long long i=1 ; i <= q; i++)
	{
			scanf("%lld %lld %lld",&l,&r,&c);
			b[l] +=c;
			b[r+1] -= c;     //差分 
	}
//	for( int i=1;i<=n;i++)
//	cout<<b[i]<<" ";
	printf("%lld",b[1]);
    long long sum = b[1];
	for(long long i=2;i<=n;i++)	
	{
		sum +=b[i];
		printf(" %lld",sum);
	}
	return 0;
}

小结
差分确实是一个非常好的方法,把原本的暴力 O(qn)降到了O(n+q)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TT's Magic Cat -- 差分 的相关文章

  • MATLAB的cat()函数

    原文地址 xff1a MATLAB的cat 函数 作者 xff1a 工程师 cat xff1a 用来联结数组 用法 xff1a C 61 cat dim A B 按dim来联结A和B两个数组 C 61 cat dim A1 A2 A3 按d
  • week5 作业B TT's Magic Cat

    TT s Magic Cat Thanks to everyone s help last week TT finally got a cute cat But what TT didn t expect is that this is a
  • WEEK 5 B TT's Magic Cat

    题目 xff1a Thanks to everyone s help last week TT finally got a cute cat But what TT didn t expect is that this is a magic
  • TT's Magic Cat -- 差分

    题意 TT 有一只猫 xff0c 它从 世界地图 选了 n 个城市 xff0c 用 ai 表示每个城市的资产 猫会给出几个操作 xff0c 区间 l r 的城市资产都加 c 在q次操作后 xff0c 输出所有城市的资产 Input 第一行有
  • HDU3700 Cat 恶心模拟题

    Problem Address xff1a http acm hdu edu cn showproblem php pid 61 3700 前言 终于又A了一道恶心的模拟题 看来HDU恶心题还是蛮多的 思路 扫描一遍 xff0c 如果有时间
  • linux中sed配合 grep,grep与cat、sed的结合

    grep查找命令 grep命令是linux系统中 xff0c 最常用的文件字符串查找命令 xff0c 职业生涯中 xff0c 我们几乎离不开它 下面是它最简单的用法 xff0c 不过实际情况下 xff0c 我们通常会添加很多参数或结合其他的
  • Cat.1

    近日 xff0c 中国联通Cat 1芯片大规模采购招标结果出炉 xff0c 这是自年初 一夜走红 之后 xff0c Cat 1再次引发业界关注 实际上 xff0c Cat 1并不是一项新技术 xff0c 其早在十年前就已 出道 坐了十年 冷
  • linux查看日志文件内容命令sed、cat、tac、more、less、head、tail、echo 1、按时间查询

    查询日志 xff1a linux查看日志文件内容命令sed cat tac more less head tail echo 1 按时间查询 sed n 39 2017 09 20 14 00 2017 09 20 15 00 p 39 c
  • Cat-Tree-Select 基于Vue+Element的树选择器

    Cat Tree Select 基于Vue 43 Element的树选择器 基于 Element 的Vue 组件 Vue js 2 x cat tree select Github 地址 前言 本人在最近的开发工作中常需要用到树选择器 目前
  • cat命令详解

    命令语法 Usage cat OPTION FILE 使用 cat 选项 文件名 OPTION 可选项 A show all equivalent to vET 相当于 vET 三个选项 b number nonblank number n
  • 猫没啥用?

    这可能在许多常见问题解答中 而不是使用 cat file command 这被称为猫的无用使用 正确的方法应该是 command lt file 第二种 正确 方式 操作系统不必生成额外的进程 尽管知道这一点 我仍然继续使用无用的猫 原因有
  • 使用cat函数写入csv文件

    我需要使用 cat 函数向 CSV 添加新行 请你们帮帮我好吗 我对 R 的了解有限 这是文件 name1 csv 系统要求我将我的姓名和学生 ID 添加到前几行 homework1 lt data frame homework1 Tota
  • 如何拆分文件并并行处理它们,然后将它们缝合回去? UNIX

    我有一个文本文件infile txt像这样 abc what s the foo bar foobar hello world hhaha cluster spatio something something xyz trying to d
  • 将列表(如 R 控制台输出中所示)写入文本文件

    我在 r 中将列表写入文本文件时遇到问题 这是我的代码 library e1071 mydata read table TRAIN txt sep header FALSE model lt naiveBayes as factor V1
  • 在 Linux 上快速连接多个文件

    我正在使用 Python 多重处理为每个进程生成一个临时输出文件 它们的大小可能有几 GB 我制作了几十个 这些临时文件需要连接起来才能形成所需的输出 而这一步被证明是瓶颈 也是并行杀手 是否有一个 Linux 工具可以通过修改文件系统元数
  • 我可以在不使用 cat 的情况下将 shell 函数作为管道有条件地“消失”吗?

    我有一个 bash 脚本 可以从命令管道中生成一些文本 基于命令行选项 我想对输出进行一些验证 举一个人为的例子 CHECK OUTPUT 1 check output if CHECK OUTPUT check then Don t ch
  • 在 R 中结合 head 和 tail 方法

    我经常使用 R 包 utils 中的 head d 和 tail d 方法 经常一个接一个 所以我为这两个函数编写了一个简单的包装器 ht lt function d m 5 n m print the head and tail toge
  • Python:使用另一个命令的输入

    我想知道如何管理 python 脚本中另一个命令的输入 Example cat myfile txt my python script py 我的脚本如何管理来自 cat 命令的输入流 如何从此管道命令获取输入 多谢 实现此目的的一种简单且
  • Bash:将字符串添加到文件末尾而不换行

    如何将字符串添加到文件末尾而不换行 例如 如果我使用 gt gt 它将添加到文件末尾并换行 cat list txt yourText1 root host 37 echo yourText2 gt gt list txt root hos
  • 按日期合并多个日志文件,包括多行

    我有几个包含所有以时间戳开头的行的日志 因此以下内容可以按预期合并它们 cat myLog1 txt myLog2 txt sort n gt combined txt 问题是 myLog2 txt 还可以包含没有时间戳的行 例如 java

随机推荐

  • linux工作中软件运行安装常见问题

    本文主要内容是使用linux软件安装 以及运行时常出现的一些问题 xff0c 主要如下 xff1a sudo apt get update Unable to fetch some archives问题 soure 的区别export LD
  • Ubuntu OpenCV VideoCapture无法获取到摄像头图像

    现在做摄像头捕获视频实验 xff0c 使用ViedeCapture xff0c 出现如下错误 xff1a WARN 0 global home xgl opencv 4 3 0 modules videoio src cap v4l cpp
  • 字符串排序-C语言

    二 字符串排序 题目描述 输入一个长度不超过20的字符串 xff0c 对所输入的字符串 xff0c 按照ASCII码的大小从小到大进行排序 xff0c 请输出排序后的结果 输入描述 一个字符串 xff0c 其长度n lt 61 20 输出描
  • Unable to locate package sysv-rc-conf

    报错如下 xff1a 解决办法 xff0c 如下 xff1a 第一步 xff1a 在root权限下操作 xff0c 软件源列表sources list xff08 该文本的位置在vim etc apt sources list xff09
  • Gson使用方法

    一 概述 Gson是google提供的用来操作json数据的一个非常好用的类库 其使用范围非常的广泛 xff0c 所以非常有必要对其进行系统的学习 json是一种数据格式 xff0c 确切的说是一种文本数据格式 其在网络通讯过程中的作用非常
  • Centos7 安装jdk8

    使用rpm方式安装 1 jdk下载地址 xff1a https www oracle com java technologies downloads java8 2 安装 检测当前系统是否存在java环境 xff01 java versio
  • Nginx的https配置

    Nginx的https配置 参考地址 xff08 阿里云提交的教程链接 xff09 xff1a https help aliyun com document detail 212905 html spm 61 5176 b657008 he
  • Failed to parse multipart servlet request; nested exception is java.lang.IllegalStateException:

    Failed to parse multipart servlet request nested exception is java lang IllegalStateException The multi part request con
  • php7 mongodb 使用(二)原生驱动 增删改查和统计

    php7安装mongodb的扩展 宝塔面板环境下php7 3默认安装了pecl扩展包 xff0c 安装的php7 4版本是默认不带pecl扩展包的 需要手动安装 php版本 lt 7的时候 yum install php pear 就可以
  • 图论——spfa算法判断负权回路

    在最短路径模板 spfa算法中的模板只适用于不存在负权回路的图 xff0c 否则就会死循环 接下来做一下改动 xff0c 实现通过spfa算法判断是否存在负环 求负环的常用方法 xff0c 基于SPFA xff1a 统计每个点入队的次数 x
  • Python中的pip怎么配置环境变量

    https blog csdn net hanhanwanghaha宝藏女孩 欢迎您的关注 xff01 欢迎关注微信公众号 xff1a 宝藏女孩的成长日记 如有转载 xff0c 请注明出处 xff08 如不注明 xff0c 盗者必究 xff
  • 【Linux Posix】(19)网络编程II - 网络编程基础;网络编程主要函数

    目录 1 字节序列转换 1 1 字节序列转换概述 1 2 字节序列转换的函数 1 3 地址格式转换 2 网络编程基础 2 1 socket概述 2 2 套接字的三种类型 1 字节序列转换 1 1 字节序列转换概述 实验结论 xff1a 这台
  • Debian squid配置

    Basic squid conf etc squid3 squid conf instead of the super bloated default config file auth param basic program usr lib
  • Linux安装mysql以及遇到的问题解决办法

    话不多说 xff0c 直接开干 xff1a 1 mysql下载地址 xff08 这里使用的是5 7 28 xff09 官网地址 xff1a https dev mysql com downloads mysql 百度云地址 xff1a ht
  • kali-linux的搭建

    vmware kali的搭建 使用vmware搭建kali需要有kali的官方镜像 xff0c 这里给出镜像的下载地址 https mirrors tuna tsinghua edu cn kali images kali 2022 3 k
  • C++学习(一三零)规范路径canonical paths

    每个文件都只有一个规范路径 xff0c 可以有多个绝对路径和相对路径 绝对路径与系统相关 如果路径中别名 快捷方式 符号链接等内容 xff0c 规范路径都会将他们解析到实际的文件路径下
  • 树莓派4B外接电视机没反应的问题的解决

    解决办法 xff0c 修改文件 boot config txt
  • 宇宙射线 c++ || DFS

    题目 一个射线 xff0c 初始方向向上 一段时间后会分裂 xff0c 向该方向的左右45度分裂2条射线 宇宙射线会分裂那次 xff0c 每次会前进ai个单位长度 输入描述 第一行一个正整数 n n lt 61 30 表示分裂n次 第二行包
  • DDL 的恐惧 || 贪心

    题目 ZJM 有 n 个作业 xff0c 每个作业都有自己的 DDL xff0c 如果 ZJM 没有在 DDL 前做完这个作业 xff0c 那么老师会扣掉这个作业的全部平时分 所以 ZJM 想知道如何安排做作业的顺序 xff0c 才能尽可能
  • TT's Magic Cat -- 差分

    题意 TT 有一只猫 xff0c 它从 世界地图 选了 n 个城市 xff0c 用 ai 表示每个城市的资产 猫会给出几个操作 xff0c 区间 l r 的城市资产都加 c 在q次操作后 xff0c 输出所有城市的资产 Input 第一行有