题目链接

线段树区间求和问题,维护一个最大值一个最小值即可,线段树要用C++交才能过。

注意这道题不是求三个数的最大值最小值,是求k个的。

本题数据量较大,不能用N建树,用n建树。

还有一种做法是单调队列,耗时更少。

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <algorithm>
  6. #define N 1000005
  7. using namespace std;
  8. int n,k;
  9. struct Tree
  10. {
  11. int l,r,mx,mn;
  12. }tree[N*];
  13. void build(int root,int l,int r)
  14. {
  15. tree[root].l=l;
  16. tree[root].r=r;
  17. if(l==r)
  18. {
  19. scanf("%d",&tree[root].mx);
  20. tree[root].mn=tree[root].mx;
  21. return;
  22. }
  23. int mid=(l+r)>>;
  24. build(root<<,l,mid);
  25. build(root<<|,mid+,r);
  26. tree[root].mx=max(tree[root<<].mx,tree[root<<|].mx);
  27. tree[root].mn=min(tree[root<<].mn,tree[root<<|].mn);
  28. }
  29. int querymx(int root,int l,int r)
  30. {
  31. if(l<=tree[root].l&&r>=tree[root].r) return tree[root].mx;
  32. int mid=(tree[root].l+tree[root].r)>>,ret=-;
  33. if(l<=mid) ret=max(querymx(root<<,l,r),ret);
  34. if(r>mid) ret=max(querymx(root<<|,l,r),ret);
  35. return ret;
  36. }
  37. int querymn(int root,int l,int r)
  38. {
  39. if(l<=tree[root].l&&r>=tree[root].r) return tree[root].mn;
  40. int mid=(tree[root].l+tree[root].r)>>,ret=;
  41. if(l<=mid) ret=min(querymn(root<<,l,r),ret);
  42. if(r>mid) ret=min(querymn(root<<|,l,r),ret);
  43. return ret;
  44. }
  45. void pr()
  46. {
  47. for(int i=;i<=n-k+;i++)
  48. printf("%d ",querymn(,i,i+k-));
  49. puts("");
  50. for(int i=;i<=n-k+;i++)
  51. printf("%d ",querymx(,i,i+k-));
  52. puts("");
  53. }
  54. int main()
  55. {
  56. while(scanf("%d%d",&n,&k)!=EOF)
  57. {
  58. build(,,n);
  59. pr();
  60. }
  61. return ;
  62. }

POJ 2823 Sliding Window 线段树区间求和问题的更多相关文章

  1. POJ 2823 Sliding Window 线段树

    http://poj.org/problem?id=2823 出太阳啦~^ ^被子拿去晒了~晚上还要数学建模,刚才躺在床上休息一下就睡着了,哼,还好我强大,没有感冒. 话说今年校运会怎么没下雨!!!说 ...

  2. 洛谷P1886 滑动窗口(POJ.2823 Sliding Window)(区间最值)

    To 洛谷.1886 滑动窗口 To POJ.2823 Sliding Window 题目描述 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口.现在这个从左边开始向右滑动,每 ...

  3. PKU 2823 Sliding Window(线段树||RMQ||单调队列)

    题目大意:原题链接(定长区间求最值) 给定长为n的数组,求出每k个数之间的最小/大值. 解法一:线段树 segtree节点存储区间的最小/大值 Query_min(int p,int l,int r, ...

  4. POJ 2823 Sliding Window 题解

    POJ 2823 Sliding  Window 题解 Description An array of size n ≤ 106 is given to you. There is a sliding ...

  5. POJ 2823 Sliding Window + 单调队列

    一.概念介绍 1. 双端队列 双端队列是一种线性表,是一种特殊的队列,遵守先进先出的原则.双端队列支持以下4种操作: (1)   从队首删除 (2)   从队尾删除 (3)   从队尾插入 (4)   ...

  6. POJ 2482 Stars in Your Window (线段树区间合并+扫描线)

    这题开始一直被矩形框束缚了,想法一直都是枚举线,但是这样枚举都需要O(n^2)...但是看了别人的思路,感觉这题思想真心很好(PS:开头好浪漫的描述啊,可惜并没有什么用)  题意就是在平面上给你一些星 ...

  7. POJ3468(线段树区间求和+区间查询)

    https://vjudge.net/contest/66989#problem/C You have N integers, A1, A2, ... , AN. You need to deal w ...

  8. Poj 3667——hotel——————【线段树区间合并】

    Hotel Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 13124   Accepted: 5664 Descriptio ...

  9. POJ 2823 Sliding Window (线段树/单调队列)

    题目不说了,可以用线段树或者单调队列,下面附上代码. 线段树: #include <iostream> #include <stdio.h> #include <algo ...

随机推荐

  1. HTML 字符实体 &lt; &gt: &amp;等

    在 HTML 中,某些字符是预留的. 在 HTML 中不能使用小于号(<)和大于号(>),这是因为浏览器会误认为它们是标签. 如果希望正确地显示预留字符,我们必须在 HTML 源代码中使用 ...

  2. Git中如何利用生成SSH个人公钥访问git仓库

    Git中如何利用生成SSH个人公钥访问git仓库方法(这里以coding平台为例): 1. 获取 SSH 协议地址 在项目的代码页面点击 SSH 切换到 SSH 协议, 获得访问地址, 请使用这个地址 ...

  3. Linux CentOS6.x ip设置(网卡设置)

    修改IP永久生效按以下方法vi /etc/sysconfig/network-scripts/ifcfg-eth0(eth0,第一块网卡,如果是第二块则为eth1)按如下修改ip: DEVICE=et ...

  4. Android源码——AsynTask

    AsyncTask<Params, Progress, Result>中三个参数为: Params         输入数据 Progress       过程数据 Result     ...

  5. Zabbix客户端安装

    CentOS 7 [root@localhost /]# rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3 ...

  6. linux下配置yun源

    备份原yum源   /etc/yum.repos.d/centos一base.repo 下载yum源       wagt 源网址/源名称/etc/yum.repos.d/原yum名

  7. HTML5学习总结-番外04 Cordova/PhoneGap

    一 PhoneGap 1 PhoneGap简绍 http://www.cnblogs.com/JustRun1983/p/3819433.html 2 环境安装 http://cordova.apac ...

  8. MVC POST在ACTION上进行多个模型的数据绑定

    首先声明,接下来的东西并不符合本人认同的严谨的MVC模式. 用MVC做项目的过程中,越来越多的用到不严谨的MVC编程. 比如,在"cshtml"文件中写: @Html.Raw(DB ...

  9. 美团HD(4)-二级联动效果

    DJNavDropView.m #import "DJNavDropView.h" #import "DJCategory.h" #import "D ...

  10. KALI Linux problems & Study Red Hat | Ubuntu

    Problem When you ask some website with https head.you may met the problem  secure connection failed ...