和上一道题没什么变化,只不过把单点增减变成了单点替换,把区间求和变成了区间求最大值。

  1. #include <cstdio>
  2. #include <algorithm>
  3. using namespace std;
  4.  
  5. const int maxn = ( << );
  6.  
  7. int n, m, qL, qR, p, v;
  8. int _max[maxn];
  9.  
  10. void build(int o, int L, int R)
  11. {
  12. if(L == R) { scanf("%d", &_max[o]); return; }
  13. int M = (L + R) / ;
  14. build(o*, L, M);
  15. build(o*+, M+, R);
  16. _max[o] = max(_max[o*], _max[o*+]);
  17. }
  18.  
  19. void update(int o, int L, int R)
  20. {
  21. if(L == R) { _max[o] = v; return; }
  22. int M = (L + R) / ;
  23. if(p <= M) update(o*, L, M);
  24. else update(o*+, M+, R);
  25. _max[o] = max(_max[o*], _max[o*+]);
  26. }
  27.  
  28. int query(int o, int L, int R)
  29. {
  30. if(qL <= L && qR >= R) return _max[o];
  31. int ans = -;
  32. int M = (L + R) / ;
  33. if(qL <= M) ans = max(ans, query(o*, L, M));
  34. if(qR > M) ans = max(ans, query(o*+, M+, R));
  35. return ans;
  36. }
  37.  
  38. char op[];
  39.  
  40. int main()
  41. {
  42. //freopen("in.txt", "r", stdin);
  43.  
  44. while(scanf("%d%d", &n, &m) == )
  45. {
  46. build(, , n);
  47.  
  48. while(m--)
  49. {
  50. scanf("%s", op);
  51. if(op[] == 'Q')
  52. {
  53. scanf("%d%d", &qL, &qR);
  54. printf("%d\n", query(, , n));
  55. }
  56. else
  57. {
  58. scanf("%d%d", &p, &v);
  59. update(, , n);
  60. }
  61. }
  62. }
  63.  
  64. return ;
  65. }

代码君

HDU (线段树 单点更新) I Hate It的更多相关文章

  1. HDU (线段树 单点更新) 敌兵布阵

    哎,又切了一天的水题. 线段树果然必须自己写出来才能叫真正的会了,之前一直在套模板确实不好. 这个题目是单点更新 之 单点增减,= ̄ω ̄= #include <cstdio> <&l ...

  2. HDU 1166 敌兵布阵(线段树单点更新,板子题)

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  3. HDU.1166 敌兵布阵 (线段树 单点更新 区间查询)

    HDU.1166 敌兵布阵 (线段树 单点更新 区间查询) 题意分析 加深理解,重写一遍 代码总览 #include <bits/stdc++.h> #define nmax 100000 ...

  4. HDU.1394 Minimum Inversion Number (线段树 单点更新 区间求和 逆序对)

    HDU.1394 Minimum Inversion Number (线段树 单点更新 区间求和 逆序对) 题意分析 给出n个数的序列,a1,a2,a3--an,ai∈[0,n-1],求环序列中逆序对 ...

  5. HDU 3074.Multiply game-区间乘法-线段树(单点更新、区间查询),上推标记取模

    Multiply game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  6. hdu 2795 Billboard 线段树单点更新

    Billboard Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=279 ...

  7. hdu 1166 敌兵布阵 (线段树单点更新)

    敌兵布阵                                                         Time Limit: 2000/1000 MS (Java/Others)  ...

  8. HDU 1754 I Hate It 线段树单点更新求最大值

    题目链接 线段树入门题,线段树单点更新求最大值问题. #include <iostream> #include <cstdio> #include <cmath> ...

  9. HDU 1166 敌兵布阵(线段树单点更新)

    敌兵布阵 单点更新和区间更新还是有一些区别的,应该注意! [题目链接]敌兵布阵 [题目类型]线段树单点更新 &题意: 第一行一个整数T,表示有T组数据. 每组数据第一行一个正整数N(N< ...

随机推荐

  1. HOWTO: Create native-looking iPhone/iPad applications from HTML, CSS and JavaScript

    HOWTO: Create native-looking iPhone/iPad applications from HTML, CSS and JavaScript Though it's not ...

  2. 如何使用 OneAPM 监控微软 Azure Cloud Service ?

    不知不觉微软 Azure 已经进入中国市场近两年的时间.那么 Azure 平台的性能究竟如何?资源加载的延迟.虚拟机的稳定性等问题是否切实满足客户期许.这些都是大家对微软 Azure 这个国外的云服务 ...

  3. JSP-declareAndOutput

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" errorPag ...

  4. tomcat 多开设置 需要需改的3个端口

    启动多tomcat需要需改的3个端口 我所用Tomcat服务器都为zip版,非安装版.以两个为例: 安装第二个Tomcat完成后,到安装目录下的conf子目录中打开server.xml文件,查找以下三 ...

  5. ZOJ 1115 Digital Roots(简单,字符串与数)

    题目 //好一道水水题,可是我居然也错了那么多次,后来百度来发现是因为数据数位可能很长很长,要用字符串数组... //简单 //有坑啊——数据可能很大很大,要用字符串表示! #include<s ...

  6. swift循环

    ..< {     println(... {     println( ":"lala"] for (key,value)in dic {     println ...

  7. App接口设计思路

    http://www.techweb.com.cn/network/system/2016-01-11/2256859.shtml http://www.woshipm.com/pmd/172952. ...

  8. Spring MVC 教程,快速入门,深入分析(转)

    原文地址:http://elf8848.iteye.com/blog/875830/

  9. 【web性能】页面呈现、重绘、回流

    在讨论页面重绘.回流之前.需要对页面的呈现流程有些了解,页面是怎么把html结合css等显示到浏览器上的,下面的流程图显示了浏览器对页面的呈现的处理流程.可能不同的浏览器略微会有些不同.但基本上都是类 ...

  10. RHEL7.2下netcat工具安装教程

    1.下载 下载地址:http://sourceforge.net/projects/netcat/files/netcat/0.7.1/(下载的是netcat-0.7.1.tar.gz版本) 2.解压 ...