Sliding Window
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的更多相关文章
- LeetCode题解-----Sliding Window Maximum
题目描述: Given an array nums, there is a sliding window of size k which is moving from the very left of ...
- [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 ...
- Leetcode: sliding window maximum
August 7, 2015 周日玩这个算法, 看到Javascript Array模拟Deque, 非常喜欢, 想用C#数组也模拟; 看有什么新的经历. 试了四五种方法, 花时间研究C# Sorte ...
- 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 ...
- POJ 2823 Sliding Window + 单调队列
一.概念介绍 1. 双端队列 双端队列是一种线性表,是一种特殊的队列,遵守先进先出的原则.双端队列支持以下4种操作: (1) 从队首删除 (2) 从队尾删除 (3) 从队尾插入 (4) ...
- POJ 2823 Sliding Window 题解
POJ 2823 Sliding Window 题解 Description An array of size n ≤ 106 is given to you. There is a sliding ...
- poj 2823 Sliding Window (单调队列入门)
/***************************************************************** 题目: Sliding Window(poj 2823) 链接: ...
- POJ 2823 Sliding Window
Sliding Window Time Limit: 12000MSMemory Limit: 65536K Case Time Limit: 5000MS Description An array ...
- POJ2823 Sliding Window
Time Limit: 12000MS Memory Limit: 65536K Total Submissions: 53086 Accepted: 15227 Case Time Limi ...
- POJ2823 Sliding Window (单调队列)
POJ2823 Sliding Window Time Limit: 12000MS Memory Limit: 65536K Total Submissions: 38342 Accepte ...
随机推荐
- thinkphp 视图模型使用分析
<?php /** * 视图模型 * */ class ViewBatchModel extends ViewModel{ public $viewFields = array( 'Jinxia ...
- PNP8550(3.3V DC蜂鸣器) - 原理图系列
一.截图 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb2Jpbl9ITEo4MA==/font/5a6L5L2T/fontsize/400/fi ...
- android ScrollView 充满屏幕
android:fillViewport=true ScrollView下面的组件如果有android:layout_height="fill_parent"或android:la ...
- Swift 表视图动画教程: Drop-In Cards
http://www.raywenderlich.com/76024/swift-table-view-animations-tutorial-drop-cards 标准 table view 是一个 ...
- PHP中的function函数详解
PHP函数,在PHP中函数起到一个不可分割的重要部分,很多功能实现都要用到函数,PHP的最大的威力就来源于函数! 在PHP中内建函数至少有上千个函数.这些内建函数了解就行了,官方文档里面有函数大全:传 ...
- sublime的js调试环境(基于node环境)
很多的语言都有控制台,都要专门的ide,js,用sublime在node的环境下,可以配置console, 如何配置?首先,要有node的环境,下载安装,还要安装到c盘才行,然后找到'工具(tool) ...
- 彻底删除mysql的方法(有隐藏文件)
1.建议使用360进行卸载,可以彻底卸载软件 2.360会提醒删除注册表 3.这个隐藏文件要删除掉 在 C:\Documents and Settings\ 路径下搜索 MySQL 文件夹(默认隐藏的 ...
- JAVA package与import机制
JAVA package与import机制 http://files.cnblogs.com/files/misybing/JAVA-package-and-import.pdf import org ...
- 如何让 .Net Console 控制台显示界面在最上层
可以利用 Win32 API 来控制 Console 窗口的 最大化 或 最小化. 废话不多说见以下代码: [DllImport("user32.dll", SetLastErro ...
- 项目报错,tomcat中引起
1.项目报错,但发现工程并没有错.此刻错误应该定位如下,即工程里面引用的jar可能有错,可能是路劲变了....