链接:

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

这次的代码和上个代码很相似,只不过上次的节点里存的是sum值,这次节点里存放的是Max, 正在慢慢找感觉

节点里保存的值是十分重要的!!!!

代码:

  1. #include<stdio.h>
  2. #include<algorithm>
  3. #include<stdlib.h>
  4. #include<string.h>
  5. using namespace std;
  6.  
  7. #define Lson r<<1
  8. #define Rson r<<1|1
  9.  
  10. const int N = *1e6+;
  11.  
  12. struct SegmentTree
  13. {
  14. int L, R;
  15. int MAX;
  16. int Mid()
  17. {
  18. return (R+L)>>;
  19. }
  20. }a[N<<];
  21.  
  22. void BuildSegTree(int r, int L, int R)
  23. {
  24. a[r].L=L, a[r].R=R;
  25.  
  26. if(L==R)
  27. {
  28. scanf("%d", &a[r].MAX);
  29. return ;
  30. }
  31.  
  32. BuildSegTree(Lson, L, a[r].Mid());
  33. BuildSegTree(Rson, a[r].Mid()+, R);
  34.  
  35. a[r].MAX = max(a[Lson].MAX, a[Rson].MAX);
  36. }
  37.  
  38. void Update(int r, int i, int e)
  39. {
  40. a[r].MAX = max(a[r].MAX, e);
  41.  
  42. if(a[r].L==a[r].R)
  43. return ;
  44.  
  45. if(i<=a[r].Mid())
  46. Update(Lson, i, e);
  47. else if(i>a[r].Mid())
  48. Update(Rson, i, e);
  49. }
  50.  
  51. int Query(int r, int L, int R)
  52. {
  53. if(a[r].L==L && a[r].R==R)
  54. return a[r].MAX;
  55.  
  56. if(R<=a[r].Mid())
  57. return Query(Lson, L, R);
  58. else if(L>a[r].Mid())
  59. return Query(Rson, L, R);
  60. else
  61. {
  62. int Lsum = Query(Lson, L, a[r].Mid());
  63. int Rsum = Query(Rson, a[r].Mid()+, R);
  64.  
  65. return max(Lsum, Rsum);
  66. }
  67. }
  68.  
  69. int main()
  70. {
  71. int n, m;
  72.  
  73. while(scanf("%d%d", &n, &m)!=EOF)
  74. {
  75. BuildSegTree(, , n);
  76.  
  77. char s[];
  78. int L, R, A, B;
  79.  
  80. while(m--)
  81. {
  82. scanf("%s", s);
  83. if(s[]=='Q')
  84. {
  85. scanf("%d%d", &L, &R);
  86. printf("%d\n", Query(, L, R));
  87. }
  88. else
  89. {
  90. scanf("%d%d", &A, &B);
  91. Update(, A, B);
  92. }
  93. }
  94. }
  95. return ;
  96. }

(线段树) I Hate It --hdu--1754 (入门)的更多相关文章

  1. HDU 1754 线段树 单点跟新 HDU 1166 敌兵布阵 线段树 区间求和

    I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  2. 线段树 扫描线 L - Atlantis HDU - 1542 M - City Horizon POJ - 3277 N - Paint the Wall HDU - 1543

    学习博客推荐——线段树+扫描线(有关扫描线的理解) 我觉得要注意的几点 1 我的模板线段树的叶子节点存的都是 x[L]~x[L+1] 2 如果没有必要这个lazy 标志是可以不下传的 也就省了一个pu ...

  3. POJ3648 A Simple Problem with Integers(线段树之成段更新。入门题)

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

  4. 线段树练习[单点更新] HDU 2795 Billboard

    题目大意:有一个h*w的公告榜,可以依次在上面添加信息.每个信息的长度为x,高为1. 优先在最上面加入,如果空间足够的话,然后优先放在最左面.统计每条公告最终的位置,即它所在的行数. 这里是线段树来存 ...

  5. 线段树->面积并 Atlantis HDU - 1542

    题目链接:https://cn.vjudge.net/problem/HDU-1542 题目大意:求面积并 具体思路:我们首先把矩形分割成一横条一横条的,然后对于每一个我们给定的矩形,我们将储存两个点 ...

  6. 线段树 + 区间更新: HDU 4893 Wow! Such Sequence!

    Wow! Such Sequence! Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Oth ...

  7. 线段树 面积并问题 hdu 1255 1542

    重点整理面积并的思想 以及PushUp的及时更新 还有就是cover的实现 以及建树每个节点存的信息(每个节点存的是一个线段的信息) http://www.tuicool.com/articles/6 ...

  8. 线段树(区间维护):HDU 3308 LCIS

    LCIS Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  9. 线段树(维护最大值):HDU Billboard

    Billboard Time Limit: 20000/8000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

随机推荐

  1. Get与Post提交方式的区别

    用 curl 测试 post 请求: curl -d   "agentCode=RB&startDate=2017-07-01&endDate=2017-09-01& ...

  2. 原生nodejs 学习笔记1

    网上许多nodejs教程或书藉都是教你调用第三方模块来编写nodejs应用的,虽然这是非常便捷的,但是封装太厚,你基本一点东西还是没有学到.人家的模块,人家想怎么改就行,可以下一版本就改了接口,你的应 ...

  3. JAVA中的异常疑点解析

    1 final, finally, finalize的区别. final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承. 内部类要访问局部变量,局部变量必须定义成final类型 ...

  4. CentOS7系列搭建Openvpn

    环境:CentOS Linux release 7.3.1611 (Core) 查看os版本命令:[root@openvpn ~]# cat /etc/redhat-release 命令记录如下: y ...

  5. fiddler 抓取 逍遥安卓模拟器 https包

    1.打开fiddler,进行相关设置 Tools--Fiddler Options 接下来进行客户端网络配置 1 查看电脑ip地址,ipconfig 逍遥游模拟器中使用自带的浏览器,访问192.168 ...

  6. IPMS 元件实作

    一.改用zg框架的jsp 1.引入表头和表尾jsp <%@ include file="../../jsp/menuHeader.jsp"%> <%@ inclu ...

  7. C#语法基础

    泛型 1.default(T)可以返回T类型的空值,因为你不知道T是值类型还是引用类型,所以别擅自用null 2.泛型约束 很多时候我们不希望使用者太过自由 我们希望他们在使用我们设计的泛型类型时 不 ...

  8. 关于元表,self,元方法__index

    这是需要仔细分辨的几个概念. 元表:相当于table的隐藏属性. 只有固定的一些方法,如__index,__tostring,__add等,称为元方法. 虽然是固定的,但是任何table都可以作为任何 ...

  9. python之字符串【str】

    #Auther Bob#--*--conding:utf-8 --*-- #定义一个str的对象,有下面两种方法name = 'Bob abc'job = str('it')print(type(na ...

  10. K组翻转链表 · Reverse Nodes in k-Group

    [抄题]: 给你一个链表以及一个k,将这个链表从头指针开始每k个翻转一下.链表元素个数不是k的倍数,最后剩余的不用翻转. [思维问题]: [一句话思路]: // reverse head->n1 ...