#include<stdio.h>

#include<string.h>

#define N  1100000

int a[N];

int fmin[N],fmax[N];

int tmin[N],tmax[N];

int dicmax(int l,int r,int f[],int k) {

    int mid;

     while(l<=r) {

        mid=(l+r)/2;

        if(k>=f[mid])//

            r=mid-1;

        else

            l=mid+1;

     }

     return l;//这里的r返回第一个大于k的数的位置-1

}

int dicmin(int l,int r,int f[],int k) {

  int mid;

  while(l<=r) {

    mid=(l+r)/2;

    if(k<=f[mid])

        r=mid-1;

    else

        l=mid+1;

  }

  return l;//

}

int main() {

   int n,k,i,j,front,end;

   while(scanf("%d%d",&n,&k)!=EOF) {

     for(i=1;i<=n;i++)

        scanf("%d",&a[i]);

     front=end=1;

     fmin[front]=a[1];

     tmin[front]=1;

     for(i=2;i<=k;i++) {

        end=dicmin(front,end,fmin,a[i]);

     //   printf("%d\n",end);

        fmin[end]=a[i];

        tmin[end]=i;

     }

     printf("%d",fmin[front]);

     for(i=k+1;i<=n;i++) {

       end=dicmin(front,end,fmin,a[i]);

        fmin[end]=a[i];

        tmin[end]=i;

        while(tmin[front]<i-k+1&&front<=end)

            front++;

        printf(" %d",fmin[front]);

     }

     printf("\n");

     front=end=1;

     fmax[1]=a[1];

     tmax[1]=1;

     for(i=2;i<=k;i++) {

        end=dicmax(front,end,fmax,a[i]);

        fmax[end]=a[i];

        tmax[end]=i;

     }

      printf("%d",fmax[front]);

       for(i=k+1;i<=n;i++) {

        end=dicmax(front,end,fmax,a[i]);

        fmax[end]=a[i];

        tmax[end]=i;

        while(tmax[front]<i-k+1&&front<=end)

            front++;

        printf(" %d",fmax[front]);

     }

     printf("\n");

   }

return 0;}

poj 2823 二分法+单调队列的更多相关文章

  1. POJ 2823【单调队列】

    题意: 给出序列,找出每个连续长度为k的子序列的最大值和最小值. 思路: 裸单调队列... 单调队列这东西用的真的非常局限,大概只能用到这种情景中== 简单说一下维护: 添加元素,为了保持单调性,排除 ...

  2. poj 1821 Fence 单调队列优化dp

    /* poj 1821 n*n*m 暴力*/ #include<iostream> #include<cstdio> #include<cstring> #incl ...

  3. POJ 3017 DP + 单调队列 + 堆

    题意:给你一个长度为n的数列,你需要把这个数列分成几段,每段的和不超过m,问各段的最大值之和的最小值是多少? 思路:dp方程如下:设dp[i]为把前i个数分成合法的若干段最大值的最小值是多少.dp转移 ...

  4. POJ 1742 Coins ( 单调队列解法 )

    id=1742" target="_blank">题目链接~~> 做题感悟:第一次做的时候用的二进制优化.可是没注意到是险过.so也没去看单调队列的解法. 解 ...

  5. Dividing the Path POJ - 2373(单调队列优化dp)

    给出一个n长度的区间,然后有一些小区间只能被喷水一次,其他区间可以喷水多次,然后问你要把这个区间覆盖起来最小需要多少喷头,喷头的半径是[a, b]. 对于每个只能覆盖一次的区间,我们可以把他中间的部分 ...

  6. 刷题总结——Cut the Sequence(POJ 3017 dp+单调队列+set)

    题目: Description Given an integer sequence { an } of length N, you are to cut the sequence into sever ...

  7. POJ 1821 Fence(单调队列优化DP)

    题解 以前做过很多单调队列优化DP的题. 这个题有一点不同是对于有的状态可以转移,有的状态不能转移. 然后一堆边界和注意点.导致写起来就很难受. 然后状态也比较难定义. dp[i][j]代表前i个人涂 ...

  8. POJ 1742 (单调队列优化多重背包+混合背包)

    (点击此处查看原题) 题意分析 给你n种不同价值的硬币,价值为val[1],val[2]...val[n],每种价值的硬币有num[1],num[2]...num[n]个,问使用这n种硬币可以凑齐[1 ...

  9. POJ 2823 Sliding Window + 单调队列

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

随机推荐

  1. boxworld开发日记2019-6-8

    打算做一个类似RimWorld的游戏,这里记录一下历程.首先,简单回顾一下. 2018年12月23日  场景管理,打算使用四叉树,后来发现四叉树在空间组织和内存占用方面并不占优势,之后计划使用地图分块 ...

  2. shiro vue 前后端分离中模拟登录遇到的坑

    系统采用jeeplus框架(ssm+redis+shiro+mongodb+redis),默认是了JSP未做前后端分离,由于业务需要已经多终端使用的需求(H5.小程序等),需要实现前后端分离.但是由于 ...

  3. [W3School]JavaScript教程学习

    JavaScript 简介 JavaScript 是世界上最流行的编程语言.这门语言可用于 HTML 和 web,更可广泛用于服务器.PC.笔记本电脑.平板电脑和智能手机等设备. JavaScript ...

  4. Light 1289 - LCM from 1 to n (位图标记+素数筛选)

    题目链接: http://www.lightoj.com/volume_showproblem.php?problem=1289 题目描述: 给出一个n,求出lcm(1,2,3......n)为多少? ...

  5. C# 的占位符

    static void Main(string[] args) { Console.WriteLine("A:{0},a:{1}",65,97); Console.ReadLine ...

  6. Windows Server 2008 R2关闭FTP服务

    公司在ZJ的项目给了一台互联网可以访问的测试服务器,但是只给了三个访问端口,而且还做了映射. 映射信息如下:[1050->3389,1051->50000,1053->21] 其中1 ...

  7. [转]mysql update操作

    转自:http://www.cnblogs.com/ggjucheng/archive/2012/11/06/2756392.html update语法 Single-table语法: UPDATE ...

  8. Roslyn导致发布网站时报错:编译失败

    最近新升级了Visual Studio 2017,创建的Web项目Bin目录中多了一个叫roslyn的文件夹,该文件夹导致网站在某些服务器上发布出错 从网上搜索了一下,Roslyn是新出的动态编译工具 ...

  9. Log4Net学习笔记(1)-完整的例子

    一.开发环境 编译器:VS2013 .Net版本:4.5 二.开发流程 1.从nuget上获取log4net 2.配置log4net的配置文件 <?xml version="1.0&q ...

  10. Elasticsearch--地理搜索

    目录 地理位置索引 空间搜索映射定义 示例 基于距离的排序 边界框过滤 距离的限制 任意地理形状搜索 点 包络线 多边形 多个多边形 把形状保存到索引中 地理位置索引 空间搜索映射定义 elastic ...