题目大意:输入n,m,k。n个数,m个区间更新标记为1~m。n次操作,每次操作有两个数x,y表示执行第x~y个区间更新。

题解:通过差分来表示某个区间更新操作执行的次数。然后用线段树来更新区间。

#include<bits/stdc++.h>
using namespace std;
const int N=1E5+;
typedef long long ll;
ll arr[N];
ll tt[N],cnt[N];
struct stu{
ll value,add;
}tree[N+N+N];
ll l1[N],r1[N],v[N];
void bt(ll root,ll start,ll end){
tree[root].add=;
if(start==end) {
tree[root].value=arr[end];
return ;
}
ll mid=(start+end)/;
bt(root*,start,mid);
bt(root*+,mid+,end);
tree[root].value=tree[root*].value+tree[root*+].value;
}
void pushdown(ll root,ll start,ll end){
ll mid=(start+end)/;
tree[root*].value+=(mid-start+)*tree[root].add;
tree[root*+].value+=(end-mid)*tree[root].add;
tree[root*].add+=tree[root].add;
tree[root*+].add+=tree[root].add;
tree[root].add=;
}
void update(ll root,ll start,ll end,ll l,ll r,ll k){
if(r<start||l>end) return ;
if(start>=l&&end<=r){
tree[root].value+=k*(end-start+);
tree[root].add+=k;
return ;
}
pushdown(root,start,end);
ll mid=(start+end)/;
update(root*,start,mid,l,r,k);
update(root*+,mid+,end,l,r,k);
tree[root].value=tree[root*].value+tree[root*+].value;
return ;
} ll query(ll root,ll start,ll end,ll i){
if(start==end) {
if(end==i) return tree[root].value;
}
if(start>i||i>end) return ;
pushdown(root,start,end);
ll mid=(start+end)/;
return query(root*,start,mid,i)+query(root*+,mid+,end,i);
} int main()
{
ios::sync_with_stdio();
ll n,m,q;
cin>>n>>m>>q;
for(ll i=;i<=n;i++) cin>>arr[i];
for(ll i=;i<=m;i++) cin>>l1[i]>>r1[i]>>v[i];
bt(,,n);
// for(ll i=1;i<=3*n;i++) cout<<tree[i].value<<endl;
for(ll i=;i<=q;i++){
ll x,y;
cin>>x>>y;
tt[x]++;
tt[y+]--;
}
ll tmp=;
for(ll i=;i<=m;i++){
tmp+=tt[i];
cnt[i]=tmp;
}
for(ll i=;i<=m;i++){
update(,,n,l1[i],r1[i],cnt[i]*v[i]);
}
for(ll i=;i<=n;i++) cout<<query(,,n,i)<<" ";
return ;
}

G - Greg and Array CodeForces - 296C 差分+线段树的更多相关文章

  1. Greg and Array CodeForces 296C 差分数组

    Greg and Array CodeForces 296C 差分数组 题意 是说有n个数,m种操作,这m种操作就是让一段区间内的数增加或则减少,然后有k种控制,这k种控制是说让m种操作中的一段区域内 ...

  2. Ultimate Weirdness of an Array CodeForces - 671C (gcd,线段树)

    大意: 定义一个数列的特征值为两个数gcd的最大值, $f(l,r)$表示数列删除区间$[l,r]$的元素后剩余元素的特征值, 求$\sum_{i=1}^n\sum_{j=i}^n{f(i,j)}$ ...

  3. 【bzoj5028】小Z的加油店 扩展裴蜀定理+差分+线段树

    题目描述 给出 $n$ 个瓶子和无限的水,每个瓶子有一定的容量.每次你可以将一个瓶子装满水,或将A瓶子内的水倒入B瓶子中直到A倒空或B倒满.$m$ 次操作,每次给 $[l,r]$ 内的瓶子容量增加 $ ...

  4. [Luogu5327][ZJOI2019]语言(树上差分+线段树合并)

    首先可以想到对每个点统计出所有经过它的链的并所包含的点数,然后可以直接得到答案.根据实现不同有下面几种方法.三个log:假如对每个点都存下经过它的链并S[x],那么每新加一条路径进来的时候,相当于在路 ...

  5. [BZOJ3307] 雨天的尾巴(树上差分+线段树合并)

    [BZOJ3307] 雨天的尾巴(树上差分+线段树合并) 题面 给出一棵N个点的树,M次操作在链上加上某一种类别的物品,完成所有操作后,要求询问每个点上最多物品的类型. N, M≤100000 分析 ...

  6. LUOGU P1438 无聊的数列 (差分+线段树)

    传送门 解题思路 区间加等差数列+单点询问,用差分+线段树解决,线段树里维护的就是差分数组,区间加等差数列相当于在差分序列中l位置处+首项的值,r+1位置处-末项的值,中间加公差的值,然后单点询问就相 ...

  7. Codeforces Round #373 (Div. 2) E. Sasha and Array 矩阵快速幂+线段树

    E. Sasha and Array time limit per test 5 seconds memory limit per test 256 megabytes input standard ...

  8. CodeForces - 587E[线段树+线性基+差分] ->(线段树维护区间合并线性基)

    题意:给你一个数组,有两种操作,一种区间xor一个值,一个是查询区间xor的结果的种类数 做法一:对于一个给定的区间,我们可以通过求解线性基的方式求出结果的种类数,而现在只不过将其放在线树上维护区间线 ...

  9. Codeforces 1076G - Array Game(博弈论+线段树)

    Codeforces 题面传送门 & 洛谷题面传送门 一道 hot tea--听讲解时半懂不懂因为不知道题目意思,最后终究还是琢磨出来了( 首先注意到对于每个 \(a_i\),它具体是什么并不 ...

随机推荐

  1. 【codeforces】Codeforces Round #606 E. Two Fairs——图论

    题目链接 题意 给你一张无向图,求出有多少对点对(x, y)满足从点x到点y的所有路径必同时经过点a和点b 分析 单点 首先考虑假如点a和点b是同一个点的情况 我从任意的一点出发,把所有与点a/b相连 ...

  2. [树的深度] Party

    Party A company has n employees numbered from 1 to n. Each employee either has no immediate manager ...

  3. 基础组合问题 ————从n个物品里选m个

    package test; import java.util.*; public class Main{ public static int f(int n,int k, int goal){ if( ...

  4. 解决使用requests_html模块,html.render()下载chromium报错、速度慢问题

    来源:https://www.cnblogs.com/xiaoaiyiwan/p/10776493.html 稍作修改 1.第一步,代码如下: from requests_html import HT ...

  5. 一文上手Tensorflow2.0(四)

    系列文章目录: Tensorflow2.0 介绍 Tensorflow 常见基本概念 从1.x 到2.0 的变化 Tensorflow2.0 的架构 Tensorflow2.0 的安装(CPU和GPU ...

  6. HTML 基础(五)

    一.列表 有序列表 无序列表 自定义列表 无序列表 无序列表是一个项目的列表,此列项目使用粗体圆点进行标记 无序列表使用 <ul> 标签 <ul> <li>Coff ...

  7. Django ORM查询结果是model对象

    xxx.object.get/filter()要查询出的结果为model对象,并不是需要的数据,如果使用需要model_to_dict()函数.

  8. HTML 基础(六)

    一.脚本 JavaScript 是 HTML 页面具有更强的动态和交互性 <script> 标签 <script> 标签用于定义客户端脚本,<script> 元素既 ...

  9. Python数据库之数据库基本操作

    安装(基于centos) yum -y install mariadb mariadb-server # centos7版本 yum -y install mysql mysql-server #ce ...

  10. NKOJ 【NOIP2015 Day2】运输计划

    时间限制 : 20000 MS   空间限制 : 262144 KB 评测说明 : 2s,256m 问题描述 公元 2044 年,人类进入了宇宙纪元. L 国有 n 个星球,还有 n−1 条双向航道, ...