FZU 2171(线段树的延迟标记)
题意:容易理解。
分析:时隔很久,再一次写了一道线段树的代码,之前线段树的题也做了不少,包括各种延迟标记,但是在组队分任务之后,我们队的线段树就交给了另外一个队友在搞,
然后我就一直没去碰线段树的题了,但是我现在发现这种做法不是很好,导致我现在的思维受到了很大的局限性,所以我现在想纠正这种错误,该做的就应该去做,就像
高中一样不能太偏科!一道比较简单的线段树延迟标记!
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath>struct node{int l , r;int sum;int color; }tree[100005*4];int n,len,a[100005];void buildTree(int l,int r,int n) {int mid = (l + r) >> 1;tree[n].l = l;tree[n].r = r;tree[n].color = 0;if(l == r){tree[n].sum = a[l];return ;}buildTree(l,mid,n*2);buildTree(mid+1,r,n*2+1);tree[n].sum = tree[n*2].sum + tree[n*2+1].sum; }void pushDown(int n) {tree[n*2].sum = tree[n*2].sum - (tree[n*2].r - tree[n*2].l + 1) * tree[n].color;tree[n*2+1].sum = tree[n*2+1].sum - (tree[n*2+1].r - tree[n*2+1].l + 1) * tree[n].color;tree[n*2].color += tree[n].color;tree[n*2+1].color += tree[n].color; }int calSum(int x,int y,int n) {int mid = (tree[n].l + tree[n].r) >> 1;if(tree[n].l==x && tree[n].r == y)return tree[n].sum;if(tree[n].color){pushDown(n);tree[n].color = 0;}if(y <= mid)return calSum(x , y , n*2);else if(x>mid)return calSum(x , y , n*2+1);elsereturn calSum(x , mid , n*2) + calSum(mid+1 , y , n*2+1); }void update(int x , int y , int n) {int mid = (tree[n].l + tree[n].r) >> 1;if(tree[n].l == x && tree[n].r == y){tree[n].sum = tree[n].sum - (tree[n].r - tree[n].l + 1);tree[n].color ++;return ;}if(y <= mid)update(x , y , n*2);else if(x > mid)update(x , y , n*2+1);else{update(x , mid , n*2);update(mid+1 , y , n*2+1);}tree[n].sum = tree[n*2].sum + tree[n*2 + 1].sum; }int main() {int i,q,x;while(scanf("%d%d%d",&n,&len,&q)!=EOF){for(i=1;i<=n;i++)scanf("%d",&a[i]);buildTree(1,n,1);while(q--){scanf("%d",&x);printf("%d\n",calSum(x , x+len-1 , 1));update(x , x+len-1 , 1);}}return 0; }
转载于:https://www.cnblogs.com/jiangjing/p/3696080.html
FZU 2171(线段树的延迟标记)相关推荐
- 线段树之延时标记(区间修改)及lazy思想
暴力求解 1.最简单的方法是:在主函数中添加一个循环 进行 r-l+1次单点修改实现区间修改,对于单个元素修改时间复杂度为 O(log2(n)) 所以对于单个区间修改的时间复杂度为 O(n*log( ...
- 【BZOJ-28921171】强袭作战大sz的游戏 权值线段树+单调队列+标记永久化+DP...
2892: 强袭作战 Time Limit: 50 Sec Memory Limit: 512 MB Submit: 45 Solved: 30 [Submit][Status][Discuss] ...
- POJ 3237 Tree (树链剖分 路径剖分 线段树的lazy标记)
题目链接:http://poj.org/problem?id=3237 一棵有边权的树,有3种操作. 树链剖分+线段树lazy标记.lazy为0表示没更新区间或者区间更新了2的倍数次,1表示为更新,每 ...
- HDU 3397 线段树 双懒惰标记
这个是去年遗留历史问题,之前思路混乱,搞了好多发都是WA,就没做了 自从上次做了大白书上那个双重懒惰标记的题目,做这个就思路很清晰了 跟上次大白上那个差不多,这个也是有一个sets标记,代表这个区间全 ...
- 0x43.数据结构进阶 - 线段树
目录 一.基础线段树 线段树的建树 线段树的单点修改 线段树的区间查询 线段树的延迟标记(懒惰标记) 1.POJ3486 ASimpleProblemwithIntegersA\ Simple\ Pr ...
- LibreOJ 6282,6284,6285 数列分块入门6,8,9 树状数组,分块,线段树等.
分块6 分块8 分块9 终于结尾了. 诶?我定义的常量变成yuzu了?我不要可怜了? 可怜有剧毒!我再用可怜我要爆零了. 好吧其实是因为我研究了橘学.这里我推荐一下Citrus. 分块6 支持插入一个 ...
- codeforces 877E. Danil and a Part-time Job (DFS序列+线段树)
传送门:codeforces 877E 题目大意: 有一颗树,树的每个节点有一盏灯,状态为亮或灭.现在可以进行以下两种操作: 1.pow x,将以 x 为根节点的子树(包括根节点)的所有节点的灯的状态 ...
- A Simple Problem with Integers POJ - 3468(线段树+区间查询+区间修改+建树+懒惰标记模板)+(树状数组)
题意: 有一个数组,有两种操作.1: Q a b 求[a,b]的和 2:C a b c 给[a,b] 的所有元素都加上c. 题目: You have N integers, A1, A2, ... , ...
- P1083 借教室(标记永久化线段树/二分+前缀和)难度⭐⭐⭐★
P1083 借教室 标记永久化线段树 很典型的区间修改问题,先输入赋值建树(这就是最典型的线段树呀,别忘了),然后修改 这里问的是是否有足够的空教室,所以线段树中 min 代表的是当前区间内最小的剩余 ...
最新文章
- 一起谈.NET技术,初识Silverlight 4及其架构
- linux deepin20.5配置WebStorm桌面快捷方式:webstorm.desktop
- GDCM:gdcm::Value的测试程序
- 【Docker-Ubuntu】ubuntu16.04 docker 使用记录
- Pycharm Anaconda 安装dlib
- Java开发实用的面试题及参考答案
- 计算机网络与通信之计算机网络体系结构
- 有一种英语口音,不仅一般人儿听不懂,连各种语音识别都全军覆没…(新版)...
- 猜词游戏(类似于Hang子手)
- [rock]Life ’s A Struggle -宋岳庭(转)
- 怎样消掉计算机桌面阴影,怎么去掉桌面阴影 电脑桌面图标出现蓝色阴影怎么办...
- 前端项目怎样合理使用模块化和闭包?
- word里输入向上或向下取整符号
- 目标跟踪经典算法汇总(持续更新...)
- 用python测测你身体是否健康
- English Learning - L1-12 情态动词 + 倒装 2023.1.12 周四
- python unescape函数_Python escape.url_unescape方法代碼示例
- Linux内核源码分析:基于最新的Linux 4.0内核(学习路线总结)
- 龙族幻想服务器维护多长时间,【龙族幻想】4月1日维护公告
- 数字孪生“警视” 警务情指一体可视化决策系统
热门文章
- 内蒙古自治区2021高考成绩查询时间,内蒙古2021年高考成绩什么时候出来?
- 关于mysql和oracle错误的有_关于MySQL与Oracle的区别
- lisp改图元字体式样_一个更改尺寸类型的LISP程序
- 005_Spring Data JPA条件查询
- 自定义组合控件:Banner、轮播图、广告栏控件
- 重启修复计算机怎么操作,如何以安全模式启动电脑,修复系统故障,这4个方法值得一试...
- cmake交叉编译android,CMake Android 交叉编译
- androidstudio返回之前界面_charles 如何修改服务器返回内容 - Breakpoints
- Spark详解(四):Spark组件以及消息通信原理
- Hadoop详解(十二):Yarn资源调度策略