★☆   输入文件:window.in   输出文件:window.out   简单对比
时间限制:2 s   内存限制:256 MB

【问题描述】

给你一个长度为N的数组,一个长为K的滑动的窗体从最左移至最右端,你只能见到窗口的K个数,每次窗体向右移动一位,如下表:

Window position Min value Max value
[1 3 -1] -3 5 3 6 7 -1 3
1 [3 -1 -3] 5 3 6 7 -3 3
1 3 [-1 -3 5]3 6 7 -3 5
1 3 -1 [-3 5 3] 6 7 -3 5
1 3 -1 -3 [5 3 6] 7 3 6
1 3 -1 -3 5 [3 6 7 ] 3 7

你的任务是找出窗口在各位置时的max value,min value.

输入格式:

第一行n,k,第二行为长度为n的数组

输出格式:

第一行每个位置的min value,第二行每个位置的max value

样例


window.in
8 3
1 3 -1 -3 5 3 6 7

window.out
-1 -3 -3 -3 3 3
3 3 5 5 6 7

数据范围:

20%:n≤500; 50%:n≤100000;
100%:n≤1000000;

线段树

RMQ

屠龙宝刀点击就送

#include <cstdio>
#define Max 1000000 int max(int a,int b)
{
return a>b?a:b;
}
int min(int a,int b)
{
return a>b?b:a;
}
struct NodeTypeTree{
int l,r,dis,max_value,min_value;
};
struct NodeTypeTree tr[Max<<];
struct Node
{
int a,b;
}ans[Max];
int n,k,cnt;
void tree_up(int k)
{
tr[k].max_value=max(tr[k<<].max_value,tr[k<<|].max_value);
tr[k].min_value=min(tr[k<<].min_value,tr[k<<|].min_value);
}
void build(int k,int l,int r)
{
tr[k].l=l;tr[k].r=r;
if(l==r)
{
scanf("%d",&tr[k].dis);
tr[k].max_value=tr[k].dis;
tr[k].min_value=tr[k].dis;
return;
}
int mid=(l+r)>>;
build(k<<,l,mid);
build(k<<|,mid+,r);
tree_up(k);
}
void section_query(int k,int l,int r)
{
if(tr[k].l==l&&tr[k].r==r)
{
ans[cnt].a=max(ans[cnt].a,tr[k].max_value);
ans[cnt].b=min(ans[cnt].b,tr[k].min_value);
return;
}
int mid=(tr[k].l+tr[k].r)>>;
if(l>mid) section_query(k<<|,l,r);
else if(r<=mid) section_query(k<<,l,r);
else section_query(k<<,l,mid),section_query(k<<|,mid+,r);
}
void swap(int &x,int &y)
{
int tmp=x;
x=y;
y=tmp;
}
int main()
{
freopen("window.in","r",stdin);
freopen("window.out","w",stdout);
scanf("%d%d",&n,&k);
build(,,n);
for(int i=;i<=n-k+;++i)
{
cnt++;
ans[cnt].a=-0x7ffffff;ans[cnt].b=0x7fffffff;
int x=i,y=i+k-;
if(x>y) swap(x,y);
section_query(,x,y);
}
for(int i=;i<=cnt;++i)
printf("%d ",ans[i].b);
printf("\n");
for(int i=;i<=cnt;++i)
printf("%d ",ans[i].a);
return ;
}

COGS 495. 窗口的更多相关文章

  1. cogs 495. 滑动窗口 单调队列

    495. 滑动窗口 ★★   输入文件:window.in   输出文件:window.out   简单对比时间限制:2 s   内存限制:256 MB [问题描述] 给你一个长度为N的数组,一个长为 ...

  2. 自定义WPF 窗口样式

    原文:自定义WPF 窗口样式 Normal 0 false 7.8 pt 0 2 false false false EN-US ZH-CN X-NONE 自定义 Window 在客户端程序中,经常需 ...

  3. .NET Core的日志[3]:将日志写入Debug窗口

    定义在NuGet包"Microsoft.Extensions.Logging.Debug"中的DebugLogger会直接调用Debug的WriteLine方法来写入分发给它的日志 ...

  4. JS判断鼠标进入容器方向的方法和分析window.open新窗口被拦截的问题

    1.鼠标进入容器方向的判定 判断鼠标从哪个方向进入元素容器是一个经常碰到的问题,如何来判断呢?首先想到的是:获取鼠标的位置,然后经过一大堆的if..else逻辑来确定.这样的做法比较繁琐,下面介绍两种 ...

  5. Windows API 设置窗口下控件Enable属性

    参考页面: http://www.yuanjiaocheng.net/webapi/create-crud-api-1-put.html http://www.yuanjiaocheng.net/we ...

  6. cesium自定义气泡窗口infoWindow

    一.自定义气泡窗口与cesium默认窗口效果对比: 1.cesium点击弹出气泡窗口显示的位置固定在地图的右上角,默认效果: 2.对于习惯arcgis或者openlayer气泡窗口样式的giser来说 ...

  7. 如何dos命令打开服务窗口?

    1.输入services.msc点击<确定>进入服务窗口.如图:

  8. cmd窗口编码设置

    问题描述:不知道误操作了什么,导致cmd窗口的鼠标显示位置出现错位,如下: 现在要将鼠标位置调整回来. 使用工具:cmd. 操作步骤: 1.查看cmd属性可以看到 可以看到是UTF-8编码格式的,我们 ...

  9. 从淘宝 UWP 的新功能 -- 比较页面来谈谈 UWP 的窗口多开功能

    前言 之前在 剁手党也有春天 -- 淘宝 UWP ”比较“功能诞生记 这篇随笔中介绍了一下 UWP 淘宝的“比较”新功能呱呱坠地的过程.在鲜活的文字背后,其实都是程序员不眠不休的血泪史(有血有泪有史) ...

随机推荐

  1. Centos Missing Library: QtWebKit.so.4

    /******************************************************************** * Centos Missing Library: QtWe ...

  2. 如何在单独的窗口中打开 Excel 文件

    如何在单独的窗口中打开 Excel 文件 文章编号:087583     2012/11/1 18:45:29 故障现象: 如何在单独的窗口中打开 Excel 文件? 解决方案: 比较安全的方法就是直 ...

  3. 学习笔记::kmp

    matrix67 nxt[i]:[1-i]中最长公共前后缀的长度 j=0;;i<=n;i++) { ]) j=nxt[j]; ]) j++; nxt[i]=j; }

  4. 【207】WinForm Chart类

    目录: 在工具箱中找到 Chart 控件并使用 设置 Chart 属性 代码中设置属性 属性中设置属性 Chart 类说明 ChartAreas ChartAreaCollection 类 Chart ...

  5. html行内要素与块级要素

    行内要素:在一行里,不可设置width和height,不能上下外铺(margin) span 块状要素,标准的 div

  6. (水题)洛谷 - P1478 - 陶陶摘苹果(升级版)

    https://www.luogu.org/problemnew/show/P1478 没啥好说的…… 居然还漏写一个等于号WA了一发. #include<bits/stdc++.h> u ...

  7. hihocoder 1331 扩展二进制数(递归)

    传送门 题意 略 分析 由低位向高位考虑,令f(n)为n的扩展二进制数表示数 1.当前数为偶数,末位为0或2,那么f(n)=f(n/2)+f(n/2-1) 2.当前数为奇数,末位为1,那么f(n)=f ...

  8. 纯javaScript实现元素平滑滚动,改进前两个版本,支持鼠标滚轮滚动和点击元素滚动,滚动更顺畅

    windowScroll(id, number, distance, direction, obj) 参数介绍: 1.id:所要滚动的元素id; 2.number:滚动次数; 3.distance:每 ...

  9. hdu6201 transaction transaction transaction(from 2017 ACM/ICPC Asia Regional Shenyang Online)

    最开始一直想着最短路,不过看完题解后,才知道可以做成最长路.唉,还是太菜了. 先上图: 只要自己添加两个点,然后如此图般求最长路即可,emmm,用SPFA可以,迪杰斯特拉也可以,或者别的都ok,只要通 ...

  10. HDU - 6058 Kanade's sum

    Bryce1010模板 http://acm.hdu.edu.cn/showproblem.php?pid=6058 /* 思路是:找出每个x为第k大的区间个数有多少 用pos[i]保存当前x的位置, ...