I Hate It

Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u

Description

很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。 
这让很多学生很反感。

不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。

Input

本题目包含多组测试,请处理到文件结束。 
在每个测试的第一行,有两个正整数 N 和 M ( 0<N<=200000,0<M<5000 ),分别代表学生的数目和操作的数目。 
学生ID编号分别从1编到N。 
第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的成绩。 
接下来有M行。每一行有一个字符 C (只取'Q'或'U') ,和两个正整数A,B。 
当C为'Q'的时候,表示这是一条询问操作,它询问ID从A到B(包括A,B)的学生当中,成绩最高的是多少。 
当C为'U'的时候,表示这是一条更新操作,要求把ID为A的学生的成绩更改为B。 

Output

对于每一次询问操作,在一行里面输出最高成绩。

Sample Input

  1. 5 6
  2. 1 2 3 4 5
  3. Q 1 5
  4. U 3 6
  5. Q 3 4
  6. Q 4 5
  7. U 2 9
  8. Q 1 5

Sample Output

  1. 5
  2. 6
  3. 5
  4. 9
  1. #include<iostream>
  2. #include<stdio.h>
  3. #include<math.h>
  4. using namespace std;
  5. const int maxx = ;
  6. int tree[maxx<<];
  7. int a[maxx];
  8. int n;
  9. void build(int root,int l,int r)
  10. {
  11. //cout<<"root:"<<root<<" l,r:"<<l<<" "<<r<<endl;
  12. if(l==r)
  13. {
  14. tree[root]=a[l];
  15. }
  16. else
  17. {
  18. int mid=(l+r)>>;
  19. build(root<<,l,mid);
  20. build((root<<)+,mid+,r);
  21. tree[root]=max(tree[root<<],tree[(root<<)+]);
  22. }
  23. }
  24. void update(int root,int l,int r,int pos,int val)
  25. {
  26. if(pos==l&&pos==r)
  27. {
  28. tree[root]=val;
  29. return;
  30. }
  31. int mid=(l+r)>>;
  32. if(pos<=mid) update(root<<,l,mid,pos,val);
  33. else update((root<<)+,mid+,r,pos,val);
  34. tree[root]=max(tree[root<<],tree[(root<<)+]);
  35. }
  36. int query(int root,int l,int r,int ql,int qr)
  37. {
  38. //cout<<"root:"<<root<<" l,r:"<<l<<" "<<r<<" ql,qr "<<ql<<" "<<qr<<" tree[root] is :"<<tree[root]<<endl;
  39. if(l==ql&&qr==r)
  40. {
  41. return tree[root];
  42. }
  43. int mid=(l+r)>>;
  44. if(qr<=mid)
  45. {
  46. return query(root<<,l,mid,ql,qr);
  47. }
  48. else if(ql>mid)
  49. {
  50. return query((root<<)+,mid+,r,ql,qr);
  51. }
  52.  
  53. else return max(query(root<<,l,mid,ql,mid),query((root<<)+,mid+,r,mid+,qr));
  54. }
  55. void print()
  56. {
  57. int j=,t=;
  58. for(int i=; i<=(n<<); i++)
  59. {
  60. j++;
  61. printf("%d ",tree[i]);
  62. if(j>pow(,(t-)))
  63. {
  64. printf("\n");
  65. j=;
  66. t++;
  67. }
  68.  
  69. }
  70. printf("\n\n");
  71. }
  72. int main()
  73. {
  74. int m;
  75. while(~scanf("%d%d",&n,&m))
  76. {
  77. for(int i=; i<=n; i++)
  78. {
  79. scanf("%d",a+i);
  80. }
  81. build(,,n);
  82.  
  83. char cmd;
  84. for(int i=; i<m; i++)
  85. {
  86. cin>>cmd;
  87. if(cmd=='U')
  88. {
  89. int tmp1,tmp2;
  90. scanf("%d%d",&tmp1,&tmp2);
  91. update(,,n,tmp1,tmp2);
  92. }
  93. else if(cmd=='Q')
  94. {
  95. int tmp1,tmp2;
  96. scanf("%d%d",&tmp1,&tmp2);
  97. int ans=query(,,n,tmp1,tmp2);
  98. printf("%d\n",ans);
  99. }
  100. }
  101. }
  102. return ;
  103. }

hdu 1754 Ihate it的更多相关文章

  1. hdu 1754 I Hate It (splay tree伸展树)

    hdu 1754 I Hate It 其实我只是来存一下我的splay模板的..请大牛们多多指教 #include<stdio.h> #include<string.h> #i ...

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

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

  3. hdu 1754 I Hate It (线段树功能:单点更新和区间最值)

    版权声明:本文为博主原创文章.未经博主同意不得转载.vasttian https://blog.csdn.net/u012860063/article/details/32982923 转载请注明出处 ...

  4. HDOJ(HDU).1754 I Hate It (ST 单点替换 区间最大值)

    HDOJ(HDU).1754 I Hate It (ST 单点替换 区间最大值) 点我挑战题目 题意分析 从题目中可以看出是大数据的输入,和大量询问.基本操作有: 1.Q(i,j)代表求区间max(a ...

  5. HDU 1754——I Hate It——————【线段树单点替换、区间求最大值】

    I Hate It Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit St ...

  6. 线段树(单点更新) HDU 1754 I Hate It

    题目传送门 /* 线段树基本功能:区间最大值,修改某个值 */ #include <cstdio> #include <cstring> #include <algori ...

  7. hdu 1754 I Hate It 线段树 点改动

    // hdu 1754 I Hate It 线段树 点改动 // // 不多说,裸的点改动 // // 继续练 #include <algorithm> #include <bits ...

  8. hdu 1754 I Hate It (模板线段树)

    http://acm.hdu.edu.cn/showproblem.php?pid=1754 I Hate It Time Limit: 9000/3000 MS (Java/Others)    M ...

  9. hdu 1754 线段树模板题

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

随机推荐

  1. hadoop学习之一

         Hadoop是一个由Apache基金会所开发的分布式系统基础架构.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储.Hadoop的框架最核心的设计 ...

  2. 使用多种方式实现遍历HashMap

    今天讲解的主要是使用多种方式来实现遍历HashMap取出Key和value,首先在java中如果想让一个集合能够用for增强来实现迭代,那么此接口或类必须实现Iterable接口,那么Iterable ...

  3. 关于showModalDialog()对话框点击按钮弹出新页面的问题

    页面a.aspx上,单击按钮a,走脚本,弹出showModalDialog("b.aspx",....) 在b.aspx上有个服务器控件按钮b,单击按钮,更新数据后,会弹出一个新的 ...

  4. HNU 12826 Balloons Colors

    题目链接:http://acm.hnu.cn/online/?action=problem&type=show&id=12826&courseid=268 #include&l ...

  5. MySQL目录

    MySQL的学习总结目录 Mysql5.7安装及配置 教你如何3分钟玩转MYSQL MySQL使用详解--根据个人学习总结 Mysql增删改 Mysql_以案例为基准之查询 MySQL之扩展(触发器, ...

  6. spring boot实战(第十三篇)自动配置原理分析

    前言 spring Boot中引入了自动配置,让开发者利用起来更加的简便.快捷,本篇讲利用RabbitMQ的自动配置为例讲分析下Spring Boot中的自动配置原理. 在上一篇末尾讲述了Spring ...

  7. iOS 使用interface builder 创建太复杂的constrains时容易产生crash

    今天写程序,遇到了crash,在界面初始化时不会有,想切换到别的tab页就报错了.主要内容如下: Cannot find an outgoing row head for incoming head ...

  8. iOS 用protocol 和 用继承小体会

    最近写程序时,2个类都有相同的函数,又因为在用oc,所以就用了protocol来实现.后来发现其实这2个类除了相同的函数,还需要一些相同的变量,当初用继承的话会更简单.

  9. 【动态规划】skiing_深度搜索_动态规划

    问题 B: [动态规划]skiing 时间限制: 1 Sec  内存限制: 128 MB提交: 28  解决: 11[提交][状态][讨论版] 题目描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪 ...

  10. poj 1611 The Suspects 解题报告

    题目链接:http://poj.org/problem?id=1611 题意:给定n个人和m个群,接下来是m行,每行给出该群内的人数以及这些人所对应的编号.需要统计出跟编号0的人有直接或间接关系的人数 ...