hiho1080 - 数据结构 线段树(入门题,两个lazy tag)
维护区间和,两个操作:一个是将某个区间设置成一个值,一个是将某个区间增加一个固定值
/**************************************************************/
每走到一个区间就把lazy tag下放。下放的时候注意顺序!
#include <cstdio>
#include <cstring>
const int N = ;
struct NODE{
int l,r;
int sum;
int setTo,add;
NODE(){setTo=add=;}
int length(){return (r-l+);}
};
int data[N];
NODE segtree[N*]; void build(int id,int l,int r){
segtree[id].l = l;
segtree[id].r = r;
if(l==r){
segtree[id].sum = data[l];
return ;
}
int mid = (l+r)>>;
build(id*+,l,mid);
build(id*+,mid+,r);
segtree[id].sum = segtree[id*+].sum+segtree[id*+].sum;
} void modify(int id,int spos,int epos,int value,int type){
if(segtree[id].l==spos&&segtree[id].r==epos){
if(type){
segtree[id].setTo = value;
segtree[id].add = ;
segtree[id].sum = segtree[id].length()*value;
}
else{
segtree[id].add += value;
segtree[id].sum += segtree[id].length()*value;
}
return ;
} //push down
if(segtree[id].setTo){
segtree[id*+].setTo=segtree[id*+].setTo=segtree[id].setTo;
segtree[id*+].add=segtree[id*+].add=;
segtree[id*+].sum = segtree[id*+].length()*segtree[id*+].setTo;
segtree[id*+].sum = segtree[id*+].length()*segtree[id*+].setTo;
segtree[id].setTo = ;
}
if(segtree[id].add){
segtree[id*+].add += segtree[id].add;
segtree[id*+].add += segtree[id].add;
segtree[id*+].sum += segtree[id*+].length()*segtree[id].add;
segtree[id*+].sum += segtree[id*+].length()*segtree[id].add;
segtree[id].add = ;
} int mid = (segtree[id].l+segtree[id].r)>>;
if(epos<=mid) modify(id*,spos,epos,value,type);
else if(spos>mid) modify(id*+,spos,epos,value,type);
else{
modify(id*+,spos,mid,value,type);
modify(id*+,mid+,epos,value,type);
} segtree[id].sum = segtree[id*+].sum+segtree[id*+].sum;
}
int main(){
int n,t;
scanf("%d%d",&n,&t); n++;
for(int i=;i<=n;i++) scanf("%d",data+i);
build(,,n);
while(t--){
int a,b,c,d;
scanf("%d%d%d%d",&a,&b,&c,&d);
modify(,b+,c+,d,a);
printf("%d\n",segtree[].sum);
}
return ;
}
hiho1080 - 数据结构 线段树(入门题,两个lazy tag)的更多相关文章
- hiho1079 - 数据结构 线段树(入门题,离散化)
题目链接 描述 小Hi和小Ho在回国之后,重新过起了朝7晚5的学生生活,当然了,他们还是在一直学习着各种算法~ 这天小Hi和小Ho所在的学校举办社团文化节,各大社团都在宣传栏上贴起了海报,但是贴来贴去 ...
- hdu 1166敌兵布阵(线段树入门题)
>>点击进入原题测试<< 思路:这两天在学线段树,这个题直接手敲一下线段树就行了,都没有用上懒人标记.入门题 cin,cout会超时,记得加std::ios::sync_wit ...
- 几道简单的线段树入门题 POJ3264&&POJ3468&&POJ2777
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 40687 Accepted: 19137 ...
- [poj2104]可持久化线段树入门题(主席树)
解题关键:离线求区间第k小,主席树的经典裸题: 对主席树的理解:主席树维护的是一段序列中某个数字出现的次数,所以需要预先离散化,最好使用vector的erase和unique函数,很方便:如果求整段序 ...
- Mosaic HDU 4819 二维线段树入门题
Mosaic Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 102400/102400 K (Java/Others)Total S ...
- A Simple Problem with Integers(线段树入门题)
Description You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. On ...
- HDU1698(线段树入门题)
Just a Hook Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Descrip ...
- POJ3264(线段树入门题)
Balanced LineupCrawling in process... Crawling failed Time Limit:5000MS Memory Limit:65536KB ...
- [AHOI 2009] 维护序列(线段树模板题)
1798: [Ahoi2009]Seq 维护序列seq Time Limit: 30 Sec Memory Limit: 64 MB Description 老师交给小可可一个维护数列的任务,现在小 ...
随机推荐
- Hybrid混合开发中schema协议的使用与封装
混合开发中JS与APP通信的实现原理: JS通过schema协议,传递参数和全局回调函数给APP端 APP执行完(如微信扫一扫)后,调用协议中传入的回调函数,在前端执行回调处理. 默认写法: < ...
- android webview一些注意事项(持续更新)
1.loadUrl() 的参数必须“http://”开头: 2.如果用到内部类获取页面内容,此类不能混淆: 3.2中情况保持不混淆需要将webview所在的包都保持不混淆,常规的保持类不混淆不生效: ...
- rmi 工作原理
rmi 工作原理 (转) 工作SocketJava应用服务器网络应用 RMI(Remote Method Invocation,远程方法调用)是Java的一组拥护开发分布式应用程序的API.RMI使 ...
- ZBrush中Nudge推动笔刷介绍
本文我们来介绍Nudge推动笔刷,该笔刷在使用时能够产生旋转涂抹的效果,Nudge笔刷允许您在模型表面移动顶点,而这些移动的顶点仍然停留在模型的原来的表面,它与Move笔刷还是不同的,利用Move笔刷 ...
- 其他信息: 具有固定名称“Npgsql”的 ADO.NET 提供程序未在计算机或应用程序配置文件中注册或无法加载。有关详细信息,请参阅内部异常
其他信息: 具有固定名称“Npgsql”的 ADO.NET 提供程序未在计算机或应用程序配置文件中注册或无法加载.有关详细信息,请参阅内部异常 解决方法 在 App.config 的 configur ...
- 洛谷P1816 忠诚 分块
分块真的是很暴力呀… 暴力查询左端,暴力查询又端点,中间整体部分直接 $O(1)$ 求出. 注意编程细节:belong[i]=(i−1)/block+1,这样可以保证序列被分成这样的: Code: # ...
- input上传文件获取文件后缀名+select通过text选中option
1.input获取后缀名 var fileName = $("input[type='file']").val();//获取上传的文件(单个) var extName = file ...
- 关于mysql无法添加中文数据的问题以及解决方案(转载)
今天弄了一天的mysql数据库,就是被一个mysql数据库乱码的问题给缠住了.现在记录一下这个问题,虽然这个问题不是什么太大的事情,但还是记录一下. 问题是这样的: 1.先在mysql的安装文件当中, ...
- [JZOJ]100047. 【NOIP2017提高A组模拟7.14】基因变异
21 世纪是生物学的世纪,以遗传与进化为代表的现代生物理论越来越多的 进入了我们的视野. 如同大家所熟知的,基因是遗传因子,它记录了生命的基本构造和性能. 因此生物进化与基因的变异息息相关,考察基因变 ...
- [学习笔记] CS131 Computer Vision: Foundations and Applications:Lecture 3 线性代数初步
向量和矩阵 什么是矩阵/向量? Vectors and matrix are just collections of ordered numbers that represent something: ...