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

题意:区间覆盖次数问题。

解题思路:线段树水之。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;const int maxn = 100005;
struct Node
{int x,y;
}p[maxn];
struct Seg
{int l,r,Max,lazy;
}tree[maxn<<2];
int n,tot,cnt,tmp[maxn<<1],order[maxn];void build(int rt,int l,int r)
{tree[rt].l = l, tree[rt].r = r;tree[rt].Max = 0,tree[rt].lazy = 0;if(l == r) return;int mid = (l + r) >> 1;build(rt<<1,l,mid);build(rt<<1|1,mid+1,r);
}void PushDown(int rt)
{if(tree[rt].lazy){tree[rt<<1].lazy += tree[rt].lazy;tree[rt<<1].Max += tree[rt].lazy;tree[rt<<1|1].lazy += tree[rt].lazy;tree[rt<<1|1].Max += tree[rt].lazy;tree[rt].lazy = 0;}
}void update(int rt,int l,int r)
{if(l <= tree[rt].l && tree[rt].r <= r){tree[rt].Max++;tree[rt].lazy++;return;}PushDown(rt);int mid = (tree[rt].l + tree[rt].r) >> 1;if(l <= mid) update(rt<<1,l,r);if(mid < r) update(rt<<1|1,l,r);tree[rt].Max = max(tree[rt<<1].Max,tree[rt<<1|1].Max);
}int bisearch(int k)
{int l = 1, r = cnt, mid;while(l <= r){mid = (l + r) >> 1;if(order[mid] == k) return mid;else if(order[mid] < k)l = mid + 1;else r = mid - 1;}
}int main()
{int t;scanf("%d",&t);while(t--){tot = cnt = 0;scanf("%d",&n);for(int i = 1; i <= n; i++){scanf("%d%d",&p[i].x,&p[i].y);tmp[tot++] = p[i].x;tmp[tot++] = p[i].y;}sort(tmp,tmp+tot);order[++cnt] = tmp[0];for(int i = 1; i < tot; i++)if(tmp[i] != tmp[i-1])order[++cnt] = tmp[i];build(1,1,cnt);for(int i = 1; i <= n; i++){int l = bisearch(p[i].x);int r = bisearch(p[i].y);update(1,l,r);}printf("%d\n",tree[1].Max);}return 0;
}

hdu 5124(线段树区间更新+lazy思想)相关推荐

  1. hdu 1698(线段树区间更新)

    解题思路:线段树区间更新水题. #include<iostream> #include<cstdio> #include<cstring> using namesp ...

  2. POJ 2777 ZOJ 1610 HDU 1698 --线段树--区间更新

    直接将这3题 放一起了  今天在做线段树的东西 这3个都是区间更新的 查询方式互相不同 反正都可以放到一起吧 直接先上链接了 touch me touch me touch me 关于涉及到区间的修改 ...

  3. hdu 3954(线段树区间更新)

    转载标记处:http://www.cnblogs.com/wang-jue/articles/2920341.html 思路:这道题所得到的经验与每个英雄的等级有关,一般的可能就用线段树一直更新到每一 ...

  4. (线段树--区间更新lazy)CDOJ1057 秋实大哥与花

    传送门:CDOJ1057 秋实大哥与花 秋实大哥是一个儒雅之人,昼听笙歌夜醉眠,若非月下即花前. 所以秋实大哥精心照料了很多花朵.现在所有的花朵排成了一行,每朵花有一个愉悦值. 秋实大哥每天要对着某一 ...

  5. hdu 5692 Snacks(dfs序+线段树区间更新)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5692 解题思路:这道题是树节点的点权更新,而且涉及到子树,常用的思路是利用dfs序,用线段树来对区间进 ...

  6. hdu 3966(树链剖分+线段树区间更新)

    传送门:Problem 3966 https://www.cnblogs.com/violet-acmer/p/9711441.html 学习资料: [1]线段树区间更新:https://blog.c ...

  7. Just a Hook(线段树区间更新)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698 In the game of DotA, Pudge's meat hook is actual ...

  8. hihoCoder 1080 : 更为复杂的买卖房屋姿势 线段树区间更新

    #1080 : 更为复杂的买卖房屋姿势 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho都是游戏迷,"模拟都市"是他们非常喜欢的一个游戏 ...

  9. CodeForces - 272C Dima and Staircase (线段树区间更新)

    题意: 见以下样例,给出 5 个区间,每个区间的高度已知.一共 4 次操作.每次操作都是从最左边开始向下垒一个宽为 w 高为h 的木块,过程见下图. 问每次垒木块的高度是多少? Input 5 1 2 ...

最新文章

  1. linux vim编辑文本是 m,linux基础命令介绍四:文本编辑 vim
  2. scrapy-1.2.1安装失败之解决方法
  3. Python Importlib模块与__import__详解
  4. 领域应用 | 知识图谱的技术与应用
  5. 怎么让无线网络共享打印机设置
  6. JavaWeb的JSP原理,详细解析(建议收藏)
  7. 微信小程序云开发教程-JavaScript入门(6)-常用函数
  8. PHPStorm 设置背景图片
  9. Java中的方法重载(overload)
  10. 微信小程序 选项卡的简单实例
  11. Qt Designer的使用
  12. matlab-gaussmf正态曲线的绘制
  13. socket介绍--数据的编码与解码
  14. 按照黑马教程学习javaWeb出现Property ‘dataSource‘ is requir报错HTTP Status 500 – Internal Server Error——解决方案
  15. 推动人工智能教育发展,创新学校高质量发展模式
  16. 形式语言与自动机 第6章 上下文无关语言的性质
  17. 高校图书馆借阅排行榜:Top40好书推荐
  18. 如何阻止浏览器的默认行为?
  19. 论文精读——HOG特征提取
  20. 手机制造的两个主要车间:SMT车间与NPI车间

热门文章

  1. java 依赖算法_java – Maven 2 – 从传递依赖版本定义依赖版本
  2. 这个中秋,来点不一样~
  3. 月营收同比 10 倍增长,神策分析 1.8 推出英文版
  4. 删除个别主机的Know_hosts文件信息
  5. nej+regular环境使用es6的低成本方案
  6. Java中对象的深克隆和浅克隆
  7. 从性能方面谈系统设计
  8. NYOJ-99 单词拼接(欧拉+回溯)
  9. Win7 一键获得管理所有权限(最高权限)注册表
  10. 还记得范进中举的故事吗