第一次打 改了半天  各种小错误 难受

  1. #include<cstdio>
  2. #include<iostream>
  3. using namespace std;
  4. const int maxn=+;
  5. int a[maxn],n;
  6. struct Node{
  7. int l,r;
  8. long long Max,lazy;
  9. void update(long long val){
  10. ;//本题没用
  11. }
  12. }tree[maxn*];
  13. void push_up(int x){
  14. tree[x].Max=max(tree[x<<].Max,tree[x<<|].Max);
  15. }
  16.  
  17. void push_down(int x){//本题不用
  18. int lazyval=tree[x].lazy;
  19. if(lazyval){
  20. tree[x<<].update(lazyval);
  21. tree[x<<|].update(lazyval);
  22. tree[x].lazy=;
  23. }
  24. }
  25. void build(int x,int l,int r){
  26. tree[x].l=l,tree[x].r=r;
  27. tree[x].Max=tree[x].lazy=;
  28. if(l==r){//建树 初始化叶子
  29. tree[x].Max=a[l];
  30. }
  31. else {//递归建树
  32. int mid=l+r>>;
  33. build(x<<,l,mid);
  34. build(x<<|,mid+,r);
  35. push_up(x);
  36. }
  37. }
  38. void update(int x,int l,int r,long long val){
  39. int L=tree[x].l,R=tree[x].r;
  40. if(l==L&&R==r&&L==R){tree[x].Max=val;return ;}//单点修改值
  41. if(r<L||l>R)return ;//如果这两个区间没有交集 x的区间就不用修改了
  42. //int mid=L+R>>1;
  43. update(x<<,l,r,val);//分别修改左右区间
  44. update(x<<|,l,r,val);
  45. push_up(x);//更新左右区间
  46. }
  47.  
  48. long long query(int x,int l,int r){
  49. int L=tree[x].l,R=tree[x].r;
  50. if(l<=L&&R<=r){return tree[x].Max;}//如果当前节点区间完全被要查询区间包含 直接返回该节点的最大值即可
  51. if(r<L||l>R)return ;//如果当前区间不在要查询区间里面,返回一个不影响其他查找的最小值 0 (学生分数都是正数)
  52. // int mid=L+R>>1;
  53. long long ans=;
  54. ans=max(query(x<<,l,r),query(x<<|,l,r));
  55. return ans;
  56. }
  57.  
  58. int main(){
  59. int n,q;
  60. while(scanf("%d%d",&n,&q)==){
  61. for(int i=;i<=n;i++)scanf("%d",&a[i]);
  62. build(,,n);
  63. char op[];
  64. int l,r;
  65. for(int i=;i<=q;i++)
  66. {
  67. scanf("%s%d%d",op,&l,&r);
  68. if(op[]=='Q'){
  69. //int l,r;
  70. //scanf("%d%d",&l,&r);
  71. printf("%lld\n",query(,l,r));
  72. }
  73. else if(op[]=='U'){
  74. //int l,r;
  75. //scanf("%d%d",&l,&r);
  76. update(,l,l,r);
  77. }
  78. }
  79.  
  80. }
  81. return ;
  82. }

B - I Hate It HDU - 1754 线段树区间最大值板子(单点更新,区间最大)的更多相关文章

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

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

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

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

  3. 线段树&&线段树的创建线段树的查询&&单节点更新&&区间更新

    目录 线段树 什么是线段树? 线段树的创建 线段树的查询 单节点更新 区间更新 未完待续 线段树 实现问题:常用于求数组区间最小值 时间复杂度:(1).建树复杂度:nlogn.(2).线段树算法复杂度 ...

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

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

  5. hdu 1754 线段树入门

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

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

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

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

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

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

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

  9. 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 ...

  10. HDU 1754线段树

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

随机推荐

  1. Bing.com在.NET Core 2.1上运行!

    Bing.com在.NET Core 2.1上运行! 相关知识请参考.netCore开发团队博客(https://blogs.msdn.microsoft.com/dotnet/) Bing.com是 ...

  2. Python_查找员工信息-48

    ''' 查找出userinfo文件中年龄大于22岁的员工姓名和年龄 1,Alex,22,13651054608,IT 2,Egon,23,13304320533,Tearcher 3,nezha,25 ...

  3. Python—生成器

    列表生成式 现在有个需求,看列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],要求你把列表里的每个值加1,你怎么实现? >>> a = [i+1 for i in r ...

  4. 全局关键字搜索:Element UI Table内容过滤\jQuery过滤器fastLiveFilter插件\BootstrapVue插件;

    ```html data:{ resultMaster: [], otableData:[], schfilter:'' } watch: { schfilter: function(val, old ...

  5. Maven指定编译级别

    maven默认的编译水平是1.5 单个项目单独设置 如果需要在某个项目中指定编译级别,可以在项目的pom.xml文件中配置,如下: <build> <plugins> < ...

  6. NET 使用 RabbitMQ

    NET 使用 RabbitMQ 前言 最近项目要使用RabbitMQ,园里里面已经有很多优秀的文章,Rabbitmq官网也有.net实例.这里我尝试下图文并茂之形式记录下使用的过程. 安装 Rabbi ...

  7. [2017BUAA软工助教]团队建议

    关于团队项目的个人建议 (以下排名不分先后) 一.hotcode5 你们组要做一个"课件-心得"共享平台 目前最大的竞争对手其实不是北航课程中心网站,而是每个系自己的大班群. 热心 ...

  8. MyBatis使用注解开发

  9. MySQL使用select查询时,在查询结果中增加一个字段并指定固定值

    假设需求是这样的: mysql> desc user; +-------+----------+------+-----+---------+----------------+ | Field ...

  10. Python爬虫——用BeautifulSoup、python-docx爬取廖雪峰大大的教程为word文档

    版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com 廖雪峰大大贡献的教程写的不错,写了个爬虫把教程保存为word文件,供大家方便下载学习:http://p ...