1 Star 0 Fork 0

wangliewei/acwing_algothrim

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
797difference.cpp 1.06 KB
一键复制 编辑 原始数据 按行查看 历史
wangliewei 提交于 2021-08-16 10:34 . add difference
//
// Created by wangliewei on 2021/8/16.
//
/*前缀和的逆运算,比如前缀和里面的s数组成为a数组的前缀和,
那么a数组就可以称为s数组的差分
原题的操作是针对前缀和数组,现在改为在差分数组上操作,可以
把时间复杂度总O(N)降到O(1),最后在求个和即可
所以关键在于搞明白在前缀和数组上的操作如何等价于在差分数组上
的操作
*/
#include<iostream>
using namespace std;
const int N = 1e5 + 10;
int a[N],b[N];
void insert(int l, int r, int c){
b[l] += c;
b[r + 1] -= c;
}
int main(){
int n, m;
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
for (int i = 1; i<=n; i++){
insert(i, i, a[i]);
}
while (m--) {
int l, r, c;
scanf("%d%d%d", &l, &r, &c);
insert(l, r, c);
}
//把b[]变成他自己的前缀和
for (int i = 1 - 1; i <= n; i++){
b[i] = b[i-1] + b[i];
}
for (int i = 1; i <= n; i++){
printf("%d ", b[i]);
}
return 0;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/wangliewei/yxc_algothrim.git
git@gitee.com:wangliewei/yxc_algothrim.git
wangliewei
yxc_algothrim
acwing_algothrim
master

搜索帮助