线段树还真有点难写。。。

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <algorithm>
  5. #include <stack>
  6. #include <queue>
  7.  
  8. using namespace std;
  9. typedef long long LL;
  10. #define oo 0x3f3f3f3f
  11. #define N 200100
  12.  
  13. struct node
  14. {
  15. int l, r;
  16. int s, e;
  17. } tree[N*4];
  18.  
  19. int A[N];
  20.  
  21. void build(int l, int r, int rt)
  22. {
  23. tree[rt].l=l;
  24. tree[rt].r=r;
  25. if(l==r)
  26. {
  27. tree[rt].s=tree[rt].e=A[l];
  28. return ;
  29. }
  30. int mid;
  31. mid=(l+r)/2;
  32. build(l, mid, rt*2);
  33. build(mid+1, r, rt*2+1);
  34. tree[rt].s=max(tree[rt*2].s, tree[rt*2+1].s);
  35. tree[rt].e=min(tree[rt*2].e, tree[rt*2+1].e);
  36.  
  37. return ;
  38. }
  39.  
  40. int query(int l, int r, int rt)
  41. {
  42. if(tree[rt].l>=l&&tree[rt].r<=r)
  43. {
  44. return tree[rt].s;
  45. }
  46. int mid=(tree[rt].l+tree[rt].r)/2;
  47. if(r<=mid) return query(l, r, rt*2);
  48. else if(l>mid) return query(l, r, rt*2+1);
  49. else
  50. {
  51. return max(query(l, mid, rt*2), query(mid+1, r, rt*2+1));
  52. }
  53. }
  54.  
  55. int Query(int l, int r, int rt)
  56. {
  57. if(tree[rt].l>=l&&tree[rt].r<=r)
  58. {
  59. return tree[rt].e;
  60. }
  61. int mid=(tree[rt].l+tree[rt].r)/2;
  62. if(r<=mid) return Query(l, r, rt*2);
  63. else if(l>mid) return Query(l, r, rt*2+1);
  64. else
  65. {
  66. return min(Query(l, mid, rt*2), Query(mid+1, r, rt*2+1));
  67. }
  68. }
  69.  
  70. int main()
  71. {
  72. int n, m, a, b;
  73.  
  74. while(~scanf("%d%d", &n, &m))
  75. {
  76. for(int i=1; i<=n; i++)
  77. scanf("%d", &A[i]);
  78. build(1, n, 1);
  79.  
  80. while(m--)
  81. {
  82. scanf("%d%d", &a, &b);
  83. printf("%d\n", query(a, b, 1)-Query(a, b, 1));
  84. }
  85. }
  86. return 0;
  87. }

poj 3246 简单线段树的更多相关文章

  1. POJ.2299 Ultra-QuickSort (线段树 单点更新 区间求和 逆序对 离散化)

    POJ.2299 Ultra-QuickSort (线段树 单点更新 区间求和 逆序对 离散化) 题意分析 前置技能 线段树求逆序对 离散化 线段树求逆序对已经说过了,具体方法请看这里 离散化 有些数 ...

  2. Buy Tickets POJ - 2828 思维+线段树

    Buy Tickets POJ - 2828 思维+线段树 题意 是说有n个人买票,但是呢这n个人都会去插队,问最后的队列是什么情况.插队的输入是两个数,第一个是前面有多少人,第二个是这个人的编号,最 ...

  3. poj 3225 【线段树】

    poj 3225 这题是用线段树解决区间问题,看了两天多,算是理解一点了. Description LogLoader, Inc. is a company specialized in provid ...

  4. poj 3264(线段树)

    http://poj.org/problem?id=3264 初学线段可以做的水题,也是线段树的基础运用.也是我的第一个线段树的题. 题意:在区间范围内的最大值减去最小值 思路:线段树记录下每个区间内 ...

  5. poj City Horizon (线段树+二分离散)

    http://poj.org/problem?id=3277 City Horizon Time Limit: 2000MS   Memory Limit: 65536K Total Submissi ...

  6. poj 3667 Hotel (线段树)

    http://poj.org/problem?id=3667 Hotel Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 94 ...

  7. HDOJ-1754(简单线段树)

    最近开始重新学习线段树,先从最简单的开始吧! I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 ...

  8. J - Assign the task - hdu 3974(DFS建树+简单线段树)

    题意:给一些节点简单额对应关系,可以组成一个树,如果树的某一个节点更新那么他的所有子节点都要更新,中间,会有一些查询 分析:题意倒也不难理解,但是但是不知道怎么建树...于是自能百度,看了kuangb ...

  9. hdu1556 Color the ball 简单线段树

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1556 简单的线段树的应用 直接贴代码了: 代码: #include<iostream> # ...

  10. HihoCoder1070 区间最小值(简单线段树)

    个测试点(输入文件)有且仅有一组测试数据. 每组测试数据的第1行为一个整数N,意义如前文所述. 每组测试数据的第2行为N个整数,分别描述每种商品的重量,其中第i个整数表示标号为i的商品的重量weigh ...

随机推荐

  1. GZY.Quartz.MUI(基于Quartz的UI可视化操作组件) 2.6.0发布 兼容.Net8.0

    前言 为了迎接.Net8.0 2.6.0终于发布了~ 更新内容: 兼容.NET8.0 新增界面按分组名称排序功能 优化本地持久化时文件路径异常的问题 优化数据库持久化时偶现的异常问题 新增简易授权,增 ...

  2. MybatisPlus高级特性之SimpleQuery工具类

    1.是很么? SimpleQuery可以对selectList查询后的结果使用Stream流进行操作,使其可以返回指定的结果,简洁了api的调用 2.怎么玩? 案例演示 (1) list操作 /** ...

  3. 云端开炉,线上训练,Bert-vits2-v2.2云端线上训练和推理实践(基于GoogleColab)

    假如我们一定要说深度学习入门会有一定的门槛,那么设备成本是一个无法避开的话题.深度学习模型通常需要大量的计算资源来进行训练和推理.较大规模的深度学习模型和复杂的数据集需要更高的计算能力才能进行有效的训 ...

  4. Celery 定义和调用异步任务Task

    https://docs.celeryq.dev/en/stable/userguide/tasks.html 使用app.task装饰器定义 需要通过导入celery app,然后使用@app.ta ...

  5. 华企盾DSC启动服务器提示“发生系统错误5”

    解决方法:没有管理员权限 导致,需要以管理员权限运行服务器安装包,覆盖安装一下

  6. MD5加密算法工具类创建

    直接上代码 /** * 通用方法工具类 */ public class CrowdUtil { /** * 对明文字符串进行MD5加密 * @param source * @return */ pub ...

  7. 用Spring Boot 3.2虚拟线程搭建静态文件服务器有多快?

    Spring Boot 3.2 于 2023 年 11 月大张旗鼓地发布,标志着 Java 开发领域的一个关键时刻.这一突破性的版本引入了一系列革命性的功能,包括: 虚拟线程:利用 Project L ...

  8. 通过印模生成电子印章-Java源代码

    以下代码是处理印模图片的核心代码,通过以下代码可以将公章图片转换为电子印章图片. 制作方式分为四步: 1.在白纸上加盖印章: 2.把加盖印章的白纸扫描,形成图片: 3.将图片通过下面的代码进行自动透明 ...

  9. C# 成为2023年度编程语言之王

    原文发表在公众号 腾讯云开发者:https://mp.weixin.qq.com/s/5owE5hmJVkwOLJrKMXfR6Q 导读 2023 TIOBE 年度编程语言正式揭晓,C# 在陪跑多年后 ...

  10. Centos 利用本地镜像安装yum源

    前提 在"设置"中确保两点 1.勾选"已连接" 2.添加上本地的"centos.iso"镜像文件 切换到用户目录 cd / 新建一个iso目 ...