poj2823:http://poj.org/problem?id=2823

题意:给出一个序列,要求得到所有长度为k的连续子序列的最大和最小值。
题解:直接上线段树

 #include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=;
int n,k,s;
struct Node{
int left;
int right;
int minn;
int maxn;
}node[*maxn];
void build(int l,int r,int idx){
node[idx].left=l;
node[idx].right=r;
if(l==r){
scanf("%d",&s);
node[idx].minn=s;
node[idx].maxn=s;
return;
}
int mid=(l+r)/;
build(l,mid,idx*);
build(mid+,r,idx*+);
node[idx].maxn=max(node[idx*].maxn,node[idx*+].maxn);
node[idx].minn=min(node[idx*].minn,node[idx*+].minn);
}
int queryminn(int s,int t,int idx){
if(node[idx].left==s&&node[idx].right==t){
return node[idx].minn;
}
int mid=(node[idx].left+node[idx].right)/;
if(mid>=t)return queryminn(s,t,idx*);//范围只能这么写,否则会出错
else if(mid<s)return queryminn(s,t,idx*+);
else
return min(queryminn(s,mid,idx*),queryminn(mid+,t,idx*+));
}
int querymaxnn(int s,int t,int idx){
if(node[idx].left==s&&node[idx].right==t){
return node[idx].maxn;
}
int mid=(node[idx].left+node[idx].right)/;
if(mid>=t)return querymaxnn(s,t,idx*);
else if(mid<s)return querymaxnn(s,t,idx*+);
else
return max(querymaxnn(s,mid,idx*),querymaxnn(mid+,t,idx*+));
}
int main(){
while(~scanf("%d%d",&n,&k)){
build(,n,);
for(int i=;i+k<=n+;i++){
printf("%d ",queryminn(i,k+i-,));
}
printf("\n");
for(int i=;i+k<=n+;i++){
printf("%d ",querymaxnn(i,k+i-,));
}
printf("\n");
}
}

Sliding Window的更多相关文章

  1. LeetCode题解-----Sliding Window Maximum

    题目描述: Given an array nums, there is a sliding window of size k which is moving from the very left of ...

  2. [LeetCode] Sliding Window Maximum 滑动窗口最大值

    Given an array nums, there is a sliding window of size k which is moving from the very left of the a ...

  3. Leetcode: sliding window maximum

    August 7, 2015 周日玩这个算法, 看到Javascript Array模拟Deque, 非常喜欢, 想用C#数组也模拟; 看有什么新的经历. 试了四五种方法, 花时间研究C# Sorte ...

  4. 239. Sliding Window Maximum *HARD* -- 滑动窗口的最大值

    Given an array nums, there is a sliding window of size k which is moving from the very left of the a ...

  5. POJ 2823 Sliding Window + 单调队列

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

  6. POJ 2823 Sliding Window 题解

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

  7. poj 2823 Sliding Window (单调队列入门)

    /***************************************************************** 题目: Sliding Window(poj 2823) 链接: ...

  8. POJ 2823 Sliding Window

    Sliding Window Time Limit: 12000MSMemory Limit: 65536K Case Time Limit: 5000MS Description An array ...

  9. POJ2823 Sliding Window

    Time Limit: 12000MS   Memory Limit: 65536K Total Submissions: 53086   Accepted: 15227 Case Time Limi ...

  10. POJ2823 Sliding Window (单调队列)

    POJ2823 Sliding Window Time Limit: 12000MS   Memory Limit: 65536K Total Submissions: 38342   Accepte ...

随机推荐

  1. docker-compose.yml 语法说明

    YAML 模板文件语法 默认的模板文件是 docker-compose.yml,其中定义的每个服务都必须通过 image 指令指定镜像或 build 指令(需要 Dockerfile)来自动构建. 其 ...

  2. QT GUI总结

      QT提供了设计师工具,可以很方便的使用鼠标拖拽的方式绘制界面.绘制完毕后自动生成一个界面的.h文件(如ui_mainwindow.h),其中含有一个自动生成的Ui_MainWindow类,这个类中 ...

  3. Java 国际化 语言切换

      Java国际化 我们使用java.lang.Locale来构造Java国际化的情境. java.lang.Locale代表特定的地理.政治和文化.需要Locale来执行其任务的操作叫语言环境敏感的 ...

  4. ArrayBlockingQueue 源码阅读 问题(一)

    今天阅读java.util.concurrent 中 ArrayBlockingQueue 的源码,发现其中有很多下面这行代码 final ReentrantLock lock = this.lock ...

  5. 用户输出表单处理php

    php中的表单输入处理,我用两个文件,在linux输出: touch php_post1.html php_post1.php php_post1.html代码如下: <!doctype htm ...

  6. HTML5移动开发中的input输入框类型

    HTML5规范引入了许多新的input输入框类型 在HTML5移动开发中,通过这些新的输入框类型来显示定制后的键盘布局,用户体验更好,更容易填写各种表单 本文中,实测手机为肾4S与米4 数字类型num ...

  7. 很好用的Tab标签切换功能,延迟Tab切换。

    一个网页,Tab标签的切换是常见的功能,但我发现很少有前端工程师在做该功能的时候,会为用户多想想,如果你觉得鼠标hover到标签上,然后切换到相应的内容,就那么简单的话,你将是一个不合格的前端工程师啊 ...

  8. TabHost理解与使用

    一.继承关系 java.lang.Object ↳ android.view.View ↳ android.view.ViewGroup ↳ android.widget.FrameLayout ↳ ...

  9. Wireshark提示没有一个可以抓包的接口

    这是由于win下默认NPF服务是关闭的,需要以管理员的身份开启这个服务 Windows上安装wireshark时,会遇到NPF驱动无法启动的情况,一般如果采用管理员的方式就可以正常启动,或者是将NPF ...

  10. healthkit 记录每天用户的运动情况

    //详细操作步骤 http://www.csdn.net/article/2015-01-23/2823686-healthkit-tutorial-with-swift //官方api https: ...