I Hate It

HDOJ-1754

  1. 这道题是线段树简单的入门题,只是简单考察了线段树的基本使用,建树等操作。
  2. 这里需要注意的是输入要不使用scanf要不使用快速输入。
  3. 这里的maxs数组需要开大一点,4倍是最稳妥的,一定不会溢出。
  4. 区间查询的时候要注意if后不是之间使用else应该分开写,因为两个区间可能是相交的。
  1. //单点更新,单点查询
  2. #include<iostream>
  3. #include<cstdio>
  4. #include<cstring>
  5. #include<string>
  6. #include<algorithm>
  7. #include<vector>
  8. #include<cmath>
  9. using namespace std;
  10. const int maxn=200005;
  11. const int INF=0X3F3F3F3F;
  12. int n,m;
  13. int maxs[maxn<<2];
  14. int a[maxn];
  15. void pushup(int id,int l,int r){
  16. int lc=id<<1;
  17. int rc=id<<1|1;
  18. maxs[id]=max(maxs[lc],maxs[rc]);
  19. }
  20. void build(int id,int l,int r){
  21. if(l==r){
  22. maxs[id]=a[l];
  23. return;
  24. }
  25. int lc=id<<1;
  26. int rc=id<<1|1;
  27. int mid=(l+r)>>1;
  28. build(lc,l,mid);
  29. build(rc,mid+1,r);
  30. pushup(id,l,r);//向上维护
  31. }
  32. void update(int id,int l,int r,int p,int v){
  33. if(l==r&&l==p){
  34. maxs[id]=v;
  35. return;
  36. }
  37. int mid=(l+r)>>1;
  38. int lc=id<<1;
  39. int rc=id<<1|1;
  40. if(p<=mid){
  41. update(lc,l,mid,p,v);
  42. }else{
  43. update(rc,mid+1,r,p,v);
  44. }
  45. pushup(id,l,r);
  46. }
  47. int query(int id,int l,int r,int p,int q){
  48. int maxss=-INF;
  49. if(p<=l&&q>=r){
  50. return maxs[id];
  51. }
  52. int mid=(l+r)>>1;
  53. if(p<=mid){
  54. maxss=max(maxss,query(id<<1,l,mid,p,q));
  55. }
  56. if(q>mid){
  57. maxss=max(maxss,query(id<<1|1,mid+1,r,p,q));
  58. }
  59. return maxss;
  60. }
  61. int main(){
  62. ios::sync_with_stdio(false);
  63. cin.tie(0);
  64. while(cin>>n>>m){
  65. for(int i=1;i<=n;i++){
  66. cin>>a[i];
  67. }
  68. build(1,1,n);
  69. for(int i=0;i<m;i++){
  70. char c;int a1,b1;
  71. cin>>c>>a1>>b1;
  72. if(c=='U'){//更新
  73. update(1,1,n,a1,b1);
  74. }else{//查询
  75. cout<<query(1,1,n,a1,b1)<<endl;
  76. }
  77. }
  78. }
  79. return 0;
  80. }

HDOJ-1754(线段树+单点更新)的更多相关文章

  1. hdu 1754 线段树 单点更新 动态区间最大值

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

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

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

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

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

  4. poj 2892---Tunnel Warfare(线段树单点更新、区间合并)

    题目链接 Description During the War of Resistance Against Japan, tunnel warfare was carried out extensiv ...

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

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

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

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

  7. POJ 1804 Brainman(5种解法,好题,【暴力】,【归并排序】,【线段树单点更新】,【树状数组】,【平衡树】)

    Brainman Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 10575   Accepted: 5489 Descrip ...

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

    描述 C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况 ...

  9. POJ.3321 Apple Tree ( DFS序 线段树 单点更新 区间求和)

    POJ.3321 Apple Tree ( DFS序 线段树 单点更新 区间求和) 题意分析 卡卡屋前有一株苹果树,每年秋天,树上长了许多苹果.卡卡很喜欢苹果.树上有N个节点,卡卡给他们编号1到N,根 ...

  10. HDUOJ----1166敌兵布阵(线段树单点更新)

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

随机推荐

  1. Kubernets二进制安装(7)之部署主控节点服务--apiserver简介

    API Server简介 Kubernetes API Server提供了K8S各类资源对象(如:pod.RC.Service等)的增删改查及watch等HTTP Rest接口,是整个系统的数据总线和 ...

  2. 根据直方图 histogram 进行简单的图像检索

    https://github.com/TouwaErioH/Machine-Learning/tree/master/image%20identification/Histogram%20retrie ...

  3. map最最最基本用法

    map<a,b>c中,a,b是变量类型 参数定义的map的名字 #include<stdio.h> #include<map> //头文件 map<int,c ...

  4. Leetcode(29)-两数相除

    给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使用乘法.除法和 mod 运算符. 返回被除数 dividend 除以除数 divisor 得到的商. 示例 1: 输 ...

  5. codeforces 9D(非原创)

    D. How many trees? time limit per test 1 second memory limit per test 64 megabytes input standard in ...

  6. Raven1渗透实战

    Raven1渗透实战 目录: 1.wordpress爆破用户 2.wp-config得到数据库账号密码 3.ssh连接4.pythn提权(sudo python -c 'import pty;pty. ...

  7. Vue 面试题汇总

    Vue 面试题汇总 refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!

  8. git 取消未成功的 merge

    git 取消未成功的 merge # 合并时遇到冲突想取消操作,恢复index $ git merge --abort # 可以回退到某个提交 $ git reset --hard # 可以撤销某个提 ...

  9. React hox

    React hox https://github.com/umijs/hox

  10. cookie & session & token compare

    cookie & session & token compare cookie.session.token 区别和优缺点 存储位置 cookie 存在 client 端 session ...