
AcWing 797. 差分
发布日期:2021-05-07 14:08:21
浏览次数:15
分类:原创文章
本文共 1413 字,大约阅读时间需要 4 分钟。
输入一个长度为n的整数序列。
接下来输入m个操作,每个操作包含三个整数l, r, c,表示将序列中[l, r]之间的每个数加上c。
请你输出进行完所有操作后的序列。
输入格式
第一行包含两个整数n和m。
第二行包含n个整数,表示整数序列。
接下来m行,每行包含三个整数l,r,c,表示一个操作。
输出格式
共一行,包含n个整数,表示最终序列。
数据范围
1≤n,m≤1000001≤n,m≤100000,
1≤l≤r≤n1≤l≤r≤n,
−1000≤c≤1000−1000≤c≤1000,
−1000≤整数序列中元素的值≤1000−1000≤整数序列中元素的值≤1000
输入样例:
6 31 2 2 1 2 11 3 13 5 11 6 1
输出样例:
3 4 5 3 4 2
import java.io.*;import java.lang.*;class Main{ static void abs(int[] b, int l, int r, int k){ b[l] += k; b[r + 1] -= k; } public static void main(String[] args)throws Exception{ BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); String[] input = buf.readLine().split(" "); String[] strNums = buf.readLine().split(" "); int n = Integer.valueOf(input[0]); int k = Integer.valueOf(input[1]); int[] a = new int[n + 2]; int[] b = new int[n + 2]; for(int i = 1; i <= n; ++i){//构造a的差分数组 abs(b, i, i, Integer.valueOf(strNums[i - 1])); } for(int i = 1; i <= k; ++i){ String[] c = buf.readLine().split(" "); int l = Integer.valueOf(c[0]); int r = Integer.valueOf(c[1]); int t = Integer.valueOf(c[2]);a abs(b, l, r, t); } for(int i = 1; i <= n; ++i){ a[i] = a[i - 1] + b[i]; } for(int i = 1; i <= n; ++i){ System.out.print(a[i] + " "); } }}
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年03月29日 06时44分47秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
添加Selinux权限
2019-03-04
ifconfig网络配置信息解析
2019-03-04
(2019.9.10测试可用)如何在Windows的cmd中使用ls命令
2019-03-04
债券中的久期是什么意思
2019-03-04
(20200328已解决)从docker容器内复制文件到宿主机
2019-03-04
理解Docker ulimit参数
2019-03-04
理解Python系统下的时间格式
2019-03-04
Python语言'类'概念再理解
2019-03-04
OpenAI Gym简介及初级实例
2019-03-04
Github上量化交易相关项目汇总
2019-03-04
Ubuntu 18.04 zip压缩文件及其文件 夹中的所以 内容
2019-03-04
int 转 CString
2019-03-04
Edit编辑框自动换行与长度
2019-03-04
英语02_单词词性
2019-03-04
低通滤波器的设计
2019-03-04
窄带随机过程的产生
2019-03-04
随机四则运算
2019-03-04
Java面向对象
2019-03-04
JAVA带标签的break和continue
2019-03-04