区间修改 区间查询

最后一场比赛前的无可救药的热身

#include <bits/stdc++.h>
using namespace std;
#define mid ((l+r)/2)
#define ls (rt<<1)
#define rs (rt<<1|1)
const int N = 2e5+; int n, s[N], tr[N], lz[N]; void build(int rt,int l,int r)
{
if(l ==r) {
tr[rt] = s[l];
return ;
}
build(ls,l,mid);
build(rs,mid+,r);
tr[rt] = tr[ls] + tr[rs];
} void down(int rt,int l,int r)
{
if(lz[rt]) {
lz[ls] = lz[rs] = lz[rt];
tr[ls] = (mid-l+) * lz[ls];
tr[rs] = (r - mid) * lz[rs];
lz[rt] = ;
}
} void update(int rt,int l,int r,int L,int R,int val)
{
if(L <= l && r <= R) {
lz[rt] = val;
tr[rt] = val * (r-l+);
return ;
}
down(rt,l,r);
if(L<=mid)
update(ls,l,mid,L,R,val);
if(R>mid)
update(rs,mid+,r,L,R,val);
tr[rt] = tr[ls] + tr[rs];
} long long query(int rt,int l,int r,int L,int R)
{
if(L <= l && r <= R) {
return tr[rt];
}
down(rt,l,r);
long long res = ;
if(L<=mid)
res = res + query(ls,l,mid,L,R);
if(R>mid)
res = res + query(rs,mid+,r,L,R);
return res;
}
void out(int rt,int l,int r)
{
printf("%d %d %d\n", l, r, tr[rt]);
if(l == r)
return ;
out(ls,l,mid);
out(rs,mid+,r);
}
int main()
{
freopen("in.txt", "r", stdin);
scanf("%d", &n);
for(int i=; i<=n; i++)
scanf("%d", &s[i]);
build(,,n);
int m; scanf("%d", &m);
while(m--) {
int op,l,r;
scanf("%d %d %d", &op, &l, &r);
if(op) {
int val; scanf("%d", &val);
update(,,n,l,r,val);
// out(1,1,n);
//puts("-----");
}else
printf("%lld\n", query(,,n,l,r));
}
return ;
}

hihoCoder week20 线段树的区间修改的更多相关文章

  1. hihoCoder #1078 : 线段树的区间修改(线段树区间更新板子题)

    #1078 : 线段树的区间修改 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 对于小Ho表现出的对线段树的理解,小Hi表示挺满意的,但是满意就够了么?于是小Hi将问题 ...

  2. hihoCoder #1078 : 线段树的区间修改

    题目大意及分析: 线段树成段更新裸题. 代码如下: # include<iostream> # include<cstdio> # include<cstring> ...

  3. hihoCode 1078 : 线段树的区间修改

    #1078 : 线段树的区间修改 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 对于小Ho表现出的对线段树的理解,小Hi表示挺满意的,但是满意就够了么?于是小Hi将问题 ...

  4. hiho一下20周 线段树的区间修改

    线段树的区间修改 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 对于小Ho表现出的对线段树的理解,小Hi表示挺满意的,但是满意就够了么?于是小Hi将问题改了改,又出给了 ...

  5. poj 3468:A Simple Problem with Integers(线段树,区间修改求和)

    A Simple Problem with Integers Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 58269   ...

  6. hiho一下21周 线段树的区间修改 离散化

    离散化 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho在回国之后,重新过起了朝7晚5的学生生活,当然了,他们还是在一直学习着各种算法~ 这天小Hi和小Ho ...

  7. UVa 11992 Fast Matrix Operations (线段树,区间修改)

    题意:给出一个row*col的全0矩阵,有三种操作 1 x1 y1 x2 y2 v:将x1 <= row <= x2, y1 <= col <= y2里面的点全部增加v: 2 ...

  8. 培训补坑(day7:线段树的区间修改与运用)(day6是测试,测试题解以后补坑QAQ)

    补坑咯~ 今天围绕的是一个神奇的数据结构:线段树.(感觉叫做区间树也挺科学的.) 线段树,顾名思义就是用来查找一段区间内的最大值,最小值,区间和等等元素. 那么这个线段树有什么优势呢? 比如我们要多次 ...

  9. HDU 1698 【线段树,区间修改 + 维护区间和】

    题目链接 HDU 1698 Problem Description: In the game of DotA, Pudge’s meat hook is actually the most horri ...

随机推荐

  1. 页面每隔n分钟轮换一个微信名和微信名

    1.前端index.html <head> <meta charset="UTF-8"> <title>n号循环</title> & ...

  2. django 网站的搭建(2)

    这里使用nginx+uwsgi的方法来搭建生产环境 1,pip3.5  install uwsgi 下载uwsgi ,这里就不做测试了,一般不会出错 2,将django与uwsgi连接在一起 毕竟ru ...

  3. sitecore系列教程之Sitecore个性化-试点开始,测试,优化,增量

    这是利用Sitecore的个性化引擎实现数字化转型的三部分系列的第三部分.之前的帖子旨在通过为您的个性化体验定义内容策略并在Sitecore中配置该策略来设置基础.   在此之前,我们讨论了内容策略以 ...

  4. RootConfig类

    package com.ssm.yjblogs.config; import java.util.Properties; import javax.sql.DataSource; import org ...

  5. 【Hbase学习之三】Hbase Java API

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 hadoop-2.6.5 hbase-0.98.12.1-h ...

  6. 【Hadoop学习之十二】MapReduce案例分析四-TF-IDF

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 hadoop-3.1.1 概念TF-IDF(term fre ...

  7. django 常用方法总结 < 手写分页-上传头像-redis缓存,排行 ...>

    1.不使用自带模块<Paginator>的手写分页功能views.pydef post_list(request): page = request.GET.get('page', 1) # ...

  8. Git从远程仓库里拉取一条本地不存在的分支方法

    Git从远程仓库里拉取一条本地不存在的分支方法 从远程仓库里拉取一条本地不存在的分支时,进入到对应目录先执行git fetch然后再执行git checkout -b 本地分支名 origin/远程分 ...

  9. AEC、AGC、ANS在视音频会议中的作用?

    AGC是自动增益补偿功能(Automatic Gain Control),AGC可以自动调麦克风的收音量,使与会者收到一定的音量水平,不会因发言者与麦克风的距离改变时,声音有忽大忽小声的缺点.ANS是 ...

  10. Python进阶【第九篇】装饰器

    什么是装饰器 装饰器本身就是函数,并且为其他函数添加附加功能 装饰器的原则:1.不修改被装饰对象的源代码  2.不修改被装饰对象的调用方式装饰器=高阶函数+函数嵌套+闭包 # res=timmer(t ...