http://acm.hdu.edu.cn/showproblem.php?pid=4391

不想我说了,调了好久

不会这。。

#include<cstdio>
#include<cstring>const int maxn(111111);
#define lson l, m, rt<<1
#define rson m+1, r, rt<<1|1
#define ll rt<<1
#define rr rt<<1|1
int max[maxn<<2], min[maxn<<2], sum[maxn<<2], col[maxn<<2];void push_up(int rt){if(col[ll]==-1&&col[rr]==-1&&sum[ll]==sum[rr]){col[rt]=-1;sum[rt]=sum[ll];}else{col[rt]=0;sum[rt]=-1;}max[rt] = max[ll] > max[rr] ? max[ll] : max[rr];min[rt] = min[ll] < min[rr] ? min[ll] : min[rr];
}
void PushDown(int rt){if(col[rt]==-1){col[ll]=col[rr]=col[rt];sum[ll]=sum[rr]=sum[rt];min[ll]=max[ll]=sum[rt];min[rr]=max[rr]=sum[rt];col[rt]=0;}
}
void build(int l, int r, int rt){if(l == r){scanf("%d", sum + rt);col[rt]=-1;max[rt] = min[rt] = sum[rt];return;}int m = (l + r )>> 1;build(lson);build(rson);push_up(rt);
}
void update(int z, int L, int R, int l, int r, int rt){//printf("-- %d %d %d %d...............\n", L, R, l, r);if(L <= l && r <= R){col[rt] = -1;sum[rt] = z;max[rt] = min[rt] = z;return;}PushDown(rt);int m =( l + r) >> 1;if(L <= m) update(z, L, R, lson);if(m < R) update(z, L, R, rson);push_up(rt);
}
int query(int z, int L, int R, int l, int r, int rt){//if(z > max[rt] || z < min[rt]) return 0;//printf("-- %d %d %d %d\n", L, R, l, r);if(L <= l && r <= R){if(col[rt]==-1&&sum[rt]==z) return (r-l+1);else if(z<min[rt]||z>max[rt]) return 0;}PushDown(rt);int m=(l+r)>>1;int ret = 0;if(L <= m) ret += query(z, L, R, lson);if(m < R) ret += query(z, L, R, rson);return ret;
}
int main(){int n,m;while(~scanf("%d%d", &n, &m)){build(1, n, 1);int a, l, r, z;while(m--){scanf("%d%d%d%d", &a, &l, &r, &z);if(a == 1) update(z, l+1, r+1, 1, n, 1);elseprintf("%d\n", query(z, l+1, r+1, 1, n, 1));}}return 0;
}

转载于:https://www.cnblogs.com/louzhang/archive/2012/08/24/2654338.html

hdu_4391,线段树相关推荐

  1. 二逼平衡树——树套树(线段树套Splay平衡树)

    题面 Bzoj3196 解析 线段树和Splay两棵树套在一起,常数直逼inf,但最终侥幸过了 思路还是比较简单, 在原数组维护一个下标线段树,再在每一个线段树节点,维护一个对应区间的权值Splay. ...

  2. 线段树——HDU - 1698

    题目含义 就是初始化一堆数为1 可以经过操作把一个区间的数都改变 并求这堆数的总大小 题目分析 有一个 #include<iostream> #include<stdio.h> ...

  3. BZOJ.1558.[JSOI2009]等差数列(线段树 差分)

    BZOJ 洛谷 首先可以把原序列\(A_i\)转化成差分序列\(B_i\)去做. 这样对于区间加一个等差数列\((l,r,a_0,d)\),就可以转化为\(B_{l-1}\)+=\(a_0\),\(B ...

  4. 【线段树分治 线性基】luoguP3733 [HAOI2017]八纵八横

    不知道为什么bzoj没有HAOI2017 题目描述 Anihc国有n个城市,这n个城市从1~n编号,1号城市为首都.城市间初始时有m条高速公路,每条高速公路都有一个非负整数的经济影响因子,每条高速公路 ...

  5. [bzoj1582][Usaco2009 Hol]Holiday Painting 节日画画_线段树

    Holiday Painting 节日画画 bzoj-1582 Usaco-2009 Hol 题目大意:给定两个n*m的01网格图.q次操作,每次将第二个网格图的子矩阵全部变成0或1,问每一次操作后两 ...

  6. codefores 786B. Legacy(最短路,线段树优化拆点,好题)

    题目链接 B. Legacy time limit per test2 seconds memory limit per test256 megabytes inputstandard input o ...

  7. 【题解】BZOJ 3065: 带插入区间K小值——替罪羊树套线段树

    题目传送门 题解 orz vfk的题解 3065: 带插入区间K小值 系列题解 一 二 三 四 惨 一开始用了一种空间常数很大的方法,每次重构的时候merge两颗线段树,然后无限RE(其实是MLE). ...

  8. 树链剖分+线段树 HDOJ 4897 Little Devil I(小恶魔)

    题目链接 题意: 给定一棵树,每条边有黑白两种颜色,初始都是白色,现在有三种操作: 1 u v:u到v路径(最短)上的边都取成相反的颜色 2 u v:u到v路径上相邻的边都取成相反的颜色(相邻即仅有一 ...

  9. bzoj1095: [ZJOI2007]Hide 捉迷藏 线段树维护括号序列 点分治 链分治

    这题真是十分难写啊 不管是点分治还是括号序列都有一堆细节.. 点分治:时空复杂度$O(n\log^2n)$,常数巨大 主要就是3个堆的初始状态 C堆:每个节点一个,为子树中的点到它父亲的距离的堆. B ...

最新文章

  1. 观察内核linux行为,观察linux行为 实验报告.doc
  2. 微信小程序view标签内容 文本过长,自动换行的问题
  3. #include *.c文件的妙用
  4. Gradle实战:发布aar包到maven仓库
  5. Webapi测试工具WebBenchmark v1.3发布
  6. Ubuntu下如何正确安装FFmpeg
  7. 写博客的这几个月,获益良多
  8. 160 - 41 defiler.1.exe
  9. 【洛谷P3389】【模板】高斯消元
  10. 表单提交数据大小的限制
  11. matlab哈宁低通,Matlab实现电网谐波测量加窗插值算法.pdf
  12. 查看工作组计算机没有服务器,计算机相关:网上邻居问题:当前工作组的服务器列表无法使用...
  13. [No00005A]word多文档合一
  14. jsp linux 一键安装包,JspStudy免费版|JspStudy(jsp环境一键安装包) v2016.01.01免费版_星星软件园...
  15. 微信头像css 3圆形,如何在手机端用PICSART制作微信圆形头像(图文教程)
  16. 好心情“沉浸式VR静心疗愈—荷塘月色”第二期企业沙龙活动圆满收官
  17. 用计算机三角函数公式,三角函数公式习题.doc
  18. LaTeX:大于等于号,小于等于号,大于号,小于号
  19. left join一对多只保留一条结果的解决方法
  20. Glide加载图片缩放模式

热门文章

  1. 写代码这条路,能走多远?工程师能力模型告诉你
  2. 聊聊 MySql 索引那些事儿
  3. Java 8系列之Stream中万能的reduce
  4. 使用Nomad构建弹性基础架构: 作业生命周期
  5. Element 'dependency' cannot have character [children], because the type's content type is element-on
  6. jQuery-给ul添加了li之后,添加的li并没有绑定点击监听怎么办?
  7. Android可输入的下拉框,android 可编辑的下拉框 Demo
  8. python 期货交易_Python期货量化交易基础教程(8)
  9. react循环setstate_react -- 关于兄弟组件触发更新的问题
  10. static在内存层面的作用_虚拟地址空间--用户进程看到的自己所占用的内存