今天学习了一下单调队列这种数据结构,思想不是很难

参考资料:http://www.cnblogs.com/Jason-Damon/archive/2012/04/19/2457889.html

然后自己写成了类的模板形式,并做了例题poj2823

代码如下:

#include <iostream>
#include <stdio.h>
#include<string.h>
#include<algorithm>
#include<string>
#include<ctype.h>
using namespace std;
#define maxn 10000010
typedef struct Node
{
int val;
int num;
}node;
typedef struct iqueue
{
node q[maxn];
int l,r;
void ini()
{
l=;
r=;
}
node front()
{
return q[l];
}
node pop()
{
l++;
return q[l-];
}
void push(node x)
{
if(r==l)
{
q[r++]=x;
return;
}
if(x.val>=q[l].val)
{
r=l;
q[r++]=x;
return;
}
while(r>=&&x.val>=q[r-].val)
{
r--;
}
q[r++]=x;
}
}Iqueue;
typedef struct dqueue
{
node q[maxn];
int l,r;
void ini()
{
l=;
r=;
}
node front()
{
return q[l];
}
node pop()
{
l++;
return q[l-];
}
void push(node x)
{
if(r==l)
{
q[r++]=x;
return;
}
if(x.val<=q[l].val)
{
r=l;
q[r++]=x;
return;
}
while(r>=&&(x.val<=q[r-].val))
{
r--;
}
q[r++]=x;
}
}Dqueue;
int big[];
int small[];
Iqueue qi;
Dqueue qd;
int main()
{
int n,k;
while(scanf("%d%d",&n,&k)!=EOF)
{
node x;
node s,b;
int t=;
qi.ini();
qd.ini();
for(int i=;i<=n;i++)
{
scanf("%d",&x.val);
x.num=i;
qi.push(x);
qd.push(x);
if(i>=k)
{
b=qi.front();
while(b.num<=i-k)
{
qi.pop();
b=qi.front();
}
s=qd.front();
while(s.num<=i-k)
{
qd.pop();
s=qd.front();
}
big[t]=b.val;
small[t++]=s.val;
}
}
for(int i=;i<t;i++)
{
printf("%d",small[i]);
if(i==t-)
puts("");
else
printf(" ");
}
for(int i=;i<t;i++)
{
printf("%d",big[i]);
if(i==t-)
puts("");
else
printf(" ");
}
}
return ;
}

poj2823:单调队列入门题的更多相关文章

  1. 刷题向》POJ2823 单调队列裸题(<不会做,请自裁>系列)

    最近BZOJ炸了,而我的博客上又更新了一些基本知识,所以这里刷一些裸题,用以丰富知识性博客 POJ2823   滑动的窗口 这是一道经典的单调队题,我记得我刚学的时候就是用这道题作为单调队列的例题,算 ...

  2. POJ 2823 Sliding Window(单调队列入门题)

      Sliding Window Time Limit: 12000MS   Memory Limit: 65536K Total Submissions: 67218   Accepted: 190 ...

  3. [Luogu P1886]滑动窗口--单调队列入门

    题目描述 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口.现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值. 例如: The array i ...

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

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

  5. luoguP1886 滑动窗口(单调队列模板题)

    题目链接:https://www.luogu.org/problem/P1886#submit 题意:给定n个数,求大小为k的滑动窗口中最小值和最大值. 思路:单调队列模板题. AC代码: #incl ...

  6. Sliding Window POJ - 2823 单调队列模板题

    Sliding Window POJ - 2823 单调队列模板题 题意 给出一个数列 并且给出一个数m 问每个连续的m中的最小\最大值是多少,并输出 思路 使用单调队列来写,拿最小值来举例 要求区间 ...

  7. POJ 2823 单调队列入门水题

    最最基础的单调队列题目.一个单增一个单减.还是可以借此好好理解一下单调队列的. #include <stdio.h> #include <string.h> #include ...

  8. poj2823 单调队列初步

    什么是单调队列:头元素一直是队列当中的最大值,队列中的值按照递减顺序排列,可以从末尾插入一个元素,或从两段删除元素 1.插入元素,为了保证队列的单调性(这里假设为递减性),在插入元素v时要将对位的元素 ...

  9. BZOJ1113 海报PLA1(单调栈入门题)

    一,自己思考下 1,先自己思考下 N个矩形,排成一排,现在希望用尽量少的海报去cover住它们. 2,不懂. 着实不懂. 3,分析下,最优性问题对吧,然后就每什么想法了.. 虽然肯定和单调栈和单调队列 ...

随机推荐

  1. 《UNIX环境高级编程》笔记--信号集

    1.信号集基本操作 我们需要有一个能表示多个信号--信号集(signal set)的数据类型.POSIX.1定义了数据类型sigset_t以包含一个信号 集,并且定义了一下五个处理信号处理信号集函数. ...

  2. Sequence(组合数学,集合不同元素的个数)

    Sequence [组合数学] 时间限制: 3 Sec  内存限制: 128 MB 提交: 138  解决: 52 [提交][状态][讨论版] 题目描述 在某个夜黑月高的晚上,!!!,原谅我编不下去了 ...

  3. Apache HttpComponents Client 4.0快速入门/升级-2.POST方法访问网页

    Apache HttpComponents Client 4.0已经发布多时,httpclient项目从commons子项目挪到了HttpComponents子项目下,httpclient3.1和 h ...

  4. swift 创建tableView 并实现协议

    import UIKit class ViewController2: UIViewController,UITableViewDelegate,UITableViewDataSource{      ...

  5. [ACM] POJ 1442 Black Box (堆,优先队列)

    Black Box Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7099   Accepted: 2888 Descrip ...

  6. 程序员实用的 MySQL sql 语句

    这儿只讲究实用,  程序员编程时常用到的 MySQL的 sql语句(不包括基本的 select, update, delete 等语句). 1. 添加一个用户build,并赋予所有权限的命令 gran ...

  7. mysql ERROR 1064 (42000): Erreur de syntaxe près de 'order)

    mysql> INSERT INTO page (author_username, page_title, addtime, cat_id, page_content,author_uid,it ...

  8. (转) 将VB.NET网站转换成C#的全过程

    在学习URL重写过程中碰到个是VB写的源码,看起来总是不爽的就GOOLE了下 感觉这个文章写的不错 原文地址 http://www.cnblogs.com/cngunner/archive/2006/ ...

  9. ---添加一条记录返回一条记录的ID

    INSERT INTO Web_AD(PID,ADType,ADTitle,ADTitle1,ADTitle2,ADTarget,LinkURL,DispalyWords,ADCode,UploadI ...

  10. C# 导出word文档及批量导出word文档(2)

    aspose.word主要是通过把读取出来的数据放到datatable里,在datable里做相应的格式的调整,再导出到word文档里.mvc和webform最后导出的语句略有不同,在mvc的cont ...