hdu_1754I Hate It(线段树)

标签: 线段树


题目链接

题意:

  1. 中文题意。。。不多说了,线段树基础题

直接上代码:

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. using namespace std;
  5. const int N = 200005;
  6. int init[N];
  7. int Max[N<<4];
  8. /*
  9. void Update(int i, int c, int l, int r, int rt)
  10. {
  11. if(r==l&&l==i) {
  12. Max[rt] = c;
  13. return;
  14. }
  15. int m = (l+r)>>1;
  16. if(i<=m) Update(i,c,l,m,rt<<1);
  17. if(i>m) Update(i,c,m+1,r,rt<<1|1);
  18. Max[rt] = max(Max[rt<<1],Max[rt<<1|1]);
  19. }
  20. */
  21. void Update(int L, int R, int c, int i, int l, int r, int rt)
  22. {
  23. if(i<=l||i>=r) return;
  24. if(r==l&&l==i) Max[rt] = c;
  25. if(L<=l&&R>=r) Max[rt] = max(Max[rt],c);
  26. int m = (l+r)>>1;
  27. if(l<=m) Update(L,R,c,i,l,m,rt<<1);
  28. if(r>m) Update(L,R,c,i,m+1,r,rt<<1|1);
  29. }
  30. int tm1,tm2;
  31. int query(int L, int R, int l, int r, int rt){
  32. if(L <= l && R >= r){
  33. return Max[rt];
  34. }
  35. int m = (l+r)>>1;
  36. tm1 = tm2 = 0;
  37. if(L<=m) tm1 = query(L,R,l,m,rt<<1);
  38. if(R>m) tm2 = query(L,R,m+1,r,rt<<1|1);
  39. return max(tm1,tm2);
  40. /* if(L==l&&R==r) return Max[rt];
  41. int m = (l+r)>>1;
  42. if(R<=m) query(L,R,l,m,rt<<1);
  43. else if(L>m) query(L,R,m+1,r,rt<<1|1);
  44. return max(query(L,m,l,m,rt<<1),query(m+1,R,m+1,r,rt<<1|1));
  45. */
  46. }
  47. int main()
  48. {
  49. int n,m;
  50. char ch;
  51. while(~scanf("%d%d",&n,&m))
  52. {
  53. memset(Max,0,sizeof(Max));
  54. memset(init,0,sizeof(init));
  55. for(int i = 1; i <= n; i++){
  56. scanf("%d",&init[i]);
  57. Update(1,n,init[i],i,1,n,1);
  58. }
  59. for(int i = 1; i <= m; i++){
  60. getchar();
  61. scanf("%c",&ch);
  62. //printf("%c",ch);
  63. int l,r;
  64. scanf("%d%d",&l,&r);
  65. if(ch=='Q'){
  66. int ans = query(l,r,1,n,1);
  67. printf("%d\n",ans);
  68. }
  69. else if(ch=='U'){
  70. Update(l,r,1,n,1);
  71. }
  72. }
  73. }
  74. return 0;
  75. }

hdu_1754I Hate It(线段树)的更多相关文章

  1. bzoj3932--可持久化线段树

    题目大意: 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第 ...

  2. codevs 1082 线段树练习 3(区间维护)

    codevs 1082 线段树练习 3  时间限制: 3 s  空间限制: 128000 KB  题目等级 : 大师 Master 题目描述 Description 给你N个数,有两种操作: 1:给区 ...

  3. codevs 1576 最长上升子序列的线段树优化

    题目:codevs 1576 最长严格上升子序列 链接:http://codevs.cn/problem/1576/ 优化的地方是 1到i-1 中最大的 f[j]值,并且A[j]<A[i] .根 ...

  4. codevs 1080 线段树点修改

    先来介绍一下线段树. 线段树是一个把线段,或者说一个区间储存在二叉树中.如图所示的就是一棵线段树,它维护一个区间的和. 蓝色数字的是线段树的节点在数组中的位置,它表示的区间已经在图上标出,它的值就是这 ...

  5. codevs 1082 线段树区间求和

    codevs 1082 线段树练习3 链接:http://codevs.cn/problem/1082/ sumv是维护求和的线段树,addv是标记这歌节点所在区间还需要加上的值. 我的线段树写法在运 ...

  6. PYOJ 44. 【HNSDFZ2016 #6】可持久化线段树

    #44. [HNSDFZ2016 #6]可持久化线段树 统计 描述 提交 自定义测试 题目描述 现有一序列 AA.您需要写一棵可持久化线段树,以实现如下操作: A v p x:对于版本v的序列,给 A ...

  7. CF719E(线段树+矩阵快速幂)

    题意:给你一个数列a,a[i]表示斐波那契数列的下标为a[i],求区间对应斐波那契数列数字的和,还要求能够维护对区间内所有下标加d的操作 分析:线段树 线段树的每个节点表示(f[i],f[i-1])这 ...

  8. 【BZOJ-3779】重组病毒 LinkCutTree + 线段树 + DFS序

    3779: 重组病毒 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 224  Solved: 95[Submit][Status][Discuss] ...

  9. 【BZOJ-3673&3674】可持久化并查集 可持久化线段树 + 并查集

    3673: 可持久化并查集 by zky Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 1878  Solved: 846[Submit][Status ...

随机推荐

  1. Panel控件的使用

    我们对控件进行分组的原因不外乎三个: 1.为了获得清晰的用户界面而将相关的窗体元素进行可视化分组. 2.编程分组,如对单选按钮进行分组. 3.为了在设计时将多个控件作为一个单元来移动. 在vb.net ...

  2. nova创建虚拟机源码分析系列之八 compute创建虚机

    /conductor/api.py _build_instance()  /conductor/rpcapi.py  _build_instance() 1 构造一些数据类型2 修改一些api版本信息 ...

  3. 转载|chrome developer tool—— 断点调试篇

    断点,调试器的功能之一,可以让程序中断在需要的地方,从而方便其分析.也可以在一次调试中设置断点,下一次只需让程序自动运行到设置断点位置,便可在上次设置断点的位置中断下来,极大的方便了操作,同时节省了时 ...

  4. css清除浮动主要方法

    1.浮动元素尾部添加空div标签,设置css为clear:both: 缺点:如果页面浮动布局多,则需要添加较多div: 2.父级元素定义伪类:after和zoom:1: .father:after{d ...

  5. Docker(七):Docker容器卷管理

    1.使用容器卷的原因:Docker容器产生的数据,如果不通过commit生成新的镜像,数据会在容器删除后丢失.为了能持久化保存和共享容器的数据,Docker提出了两种管理数据的方式:数据卷和数据卷容器 ...

  6. MongoDB数据库详解

    第1章 数据库管理系统 1.1 前言 01.数据的定义:文字.图像.地理位置信息(坐标.经纬度)等 02.数据库管理系统的定义:建立.存取和管理数据,保证数据安全和完整性的软件 03.常见的数据库管理 ...

  7. alpha rarefaction using qiime

    shannon菌群多样性指数 H=-∑(Pi)(㏑Pi) Pi=样品中属于第i种的个体的比例,如样品总个体数为N,第i种个体数为ni,则Pi=ni/N: 各种之间,个体分配越均匀,H值就越大.如果每一 ...

  8. Intellij idea破解办法

    最开始的时候intellij用得是社区版,专业版是要钱的.但是社区版的功能确实弱了很多:比如Diagrams功能就没有,比如社区版不支持web项目,想起个tomcat跑个web项目都没法搞.于是,重新 ...

  9. TabHost用法

    tabhost用两种方法 方法一:Activity继承TabActivity后用getTabHost()方法来获取tabhost(前提:Activity的setContentView要删除,这样布局才 ...

  10. MySQL创建表的语句

    show variables like 'character_set_client';#查询字符集 show databases;#列出所有的服务器上的数据库alter create database ...