1. #include <algorithm>
  2. #include <iostream>
  3. #include<sstream>
  4. #include<cstring>
  5. #include<string>
  6. #include<cstdio>
  7. #include<cctype>
  8. #include<vector>
  9. #include<deque>
  10. #include<map>
  11. #include<set>
  12.  
  13. #define M 200000
  14. #define inf 0x3f3f3f3f
  15. typedef long long ll;
  16.  
  17. using namespace std;
  18.  
  19. struct Data
  20. {
  21. int max;
  22. int left, right;
  23. }tree[M*];
  24. int n, m;
  25. int ans;
  26. int x, y;
  27. char ch;
  28.  
  29. void built(int l,int r,int k) {
  30. tree[k].left = l, tree[k].right = r;
  31. if (l == r) {
  32. scanf("%d", &tree[k].max);
  33. return;
  34. }
  35. int mid = (l + r) / ;
  36. built(l, mid,k*);
  37. built(mid + , r, k * + );
  38. tree[k].max = max(tree[k * ].max, tree[k * + ].max);
  39. }
  40.  
  41. void search(int k) {
  42. if (tree[k].left >= x && tree[k].right <= y) {
  43. ans = max(ans, tree[k].max);
  44. return;
  45. }
  46. int mid = (tree[k].left + tree[k].right) / ;
  47. if (x <= mid) search(k * );
  48. if(y>mid) search(k * + );
  49. }
  50.  
  51. void change_inv(int k) {
  52. if (tree[k].left == tree[k].right) {
  53. tree[k].max = y;
  54. return;
  55. }
  56. int mid = (tree[k].left + tree[k].right) / ;
  57. if (x <= mid) change_inv(k * );
  58. else change_inv(k * + );
  59. tree[k].max = max(tree[k * ].max, tree[k * + ].max);
  60. }
  61.  
  62. int main() {
  63. while (scanf("%d%d",&n,&m)!=EOF){
  64. built(, n, );
  65. while (m--){
  66. cin >> ch;
  67. scanf("%d%d", &x, &y);
  68. if(ch=='Q'){
  69. ans = ;
  70. search();
  71. printf("%d\n", ans);
  72. }
  73. else {
  74. change_inv();
  75. }
  76. }
  77. }
  78. return ;
  79. }

HDU - 1754 线段树的更多相关文章

  1. hdu 1754 线段树(Max+单点修改)

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

  2. HDU(1754),线段树,单点替换,区间最值

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754 线段树模板题,update功能是单点替换,query是访问区间最大值. #include < ...

  3. hdu 1754 线段树入门

    线段树点修改  区间最大值查询 #include <cstdio> #include <cstdlib> #include <cmath> #include < ...

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

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

  5. HDU 1754 线段树入门解题报告

    ---恢复内容开始--- 题意:给定区间,每个人的成绩, Q次询问,求每次询问区间中的最大值 思路:构造线段树 代码: #include<stdio.h> #include<algo ...

  6. HDU - 1754 线段树-单点修改+询问区间最大值

    这个也是线段树的经验问题,待修改的,动态询问区间的最大值,只需要每次更新的时候,去把利用子节点的信息进行修改即可以. 注意更新的时候区间的选择,需要对区间进行二分. #include<iostr ...

  7. hdu 1754 线段树(单点替换 区间最值)

    Sample Input5 61 2 3 4 5Q 1 5 //1-5结点的最大值U 3 6 //将点3的数值换成6Q 3 4Q 4 5U 2 9Q 1 5 Sample Output5659 # i ...

  8. HDU 1754线段树基本操作,建树,更新,查询

    代码线段树入门整理中有介绍. #include<cstdio> #include<algorithm> #include<cstring> #include< ...

  9. HDU 1754线段树

    第一个自己动手写的线段树,1Y还是有点小激动哈(虽然是模版题) 1 #include<cstdio> 2 #include<cstring> 3 #include<alg ...

  10. hdu 1754 线段树模板题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754 #include <cstdio> #include <cmath> # ...

随机推荐

  1. Android_03android拨号软件

    今日开发了一个简单的安卓拨号软件. 步骤如下: 1.先构建用户界面 2.写java代码获取控件 3.进行逻辑的控制 4.添加权限 1.构建用户界面 2.点进R.java文件会发现系统已经自动生成索引, ...

  2. ESP8266 SDK开发: 外设篇-串口

    串口分布 串口切换说明 1.默认所有的数据都使用串口0输出 官方提供了函数可以选择printf利用哪一个串口输出 配置printf使用串口1打印输出,波特率115200 (注:这样配置对于调试程序很有 ...

  3. POJ 1426:Find The Multiple

    Find The Multiple Time Limit: 1000MS   Memory Limit: 10000KB   64bit IO Format: %I64d & %I64u Su ...

  4. windows driver 驱动程序我的下载地址

    http://download.csdn.net/detail/sz76211822/8197619 版权声明:本文为博主原创文章,未经博主允许不得转载.

  5. Jquery获取html标签,包含该标签本身

    $(".test").prop("outerHTML"); 原生JS DOM里有一个内置属性 outerHTML,用来获取当前节点的html代码(包含当前节点) ...

  6. [题解] Luogu P4721 【模板】分治 FFT

    分治FFT的板子为什么要求逆呢 传送门 这个想法有点\(cdq\)啊,就是考虑分治,在算一段区间的时候,我们把他分成两个一样的区间,然后先做左区间的,算完过后把左区间和\(g\)卷积一下,这样就可以算 ...

  7. 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring体系结构详解

    Spring 框架采用分层架构,根据不同的功能被划分成了多个模块,这些模块大体可分为 Data Access/Integration.Web.AOP.Aspects.Messaging.Instrum ...

  8. Day 6:Vector类和实现Hashset以及登录窗口的模拟

    LinkedList作业:生成扑克牌并且洗牌? import java.util.*; class Poker{ String color; String number; public Poker(S ...

  9. Linux基础应用

    Linux刚面世时并没有图形界面,因此所有的操作全靠命令完成,如磁盘操作.文件读取.目录操作.进程管理.文件权限等都要通过命令完成.且在职场中,大量的服务器维护都是通过远程命令来完成. 常用的7个命令 ...

  10. JavaScript之基于原型链的继承

    本文介绍下js的OOP中的继承. 上图的要点为:Foo函数在创建时会自动生成内置属性prototype,而typeof Foo.prototype是object类型的. 上图的要点为:Foo.prot ...