时限12s! 所以我用了线段树的黑暗做法,其实正解是用单调队列来做的。

//By SiriusRen
#include <cstdio>
#include <cstring>
#include <algorithm>
#define N 1000001
#define lson l,mid,pos*2
#define rson mid+1,r,pos*2+1
using namespace std;
int n,k,xx,yy,ansmax,ansmin,tree[N*4],MAX[N*4],MIN[N*4],ANSMAX[N],ANSMIN[N];
void build(int l,int r,int pos){
if(l==r){scanf("%d",&tree[pos]);MAX[pos]=MIN[pos]=tree[pos];return;}
int mid=(l+r)/2;
build(lson),build(rson);
MAX[pos]=max(MAX[pos*2],MAX[pos*2+1]);
MIN[pos]=min(MIN[pos*2],MIN[pos*2+1]);
}
void query(int l,int r,int pos){
if(l>=xx&&r<=yy){ansmax=max(ansmax,MAX[pos]);ansmin=min(ansmin,MIN[pos]);return;}
int mid=(l+r)/2;
if(mid<xx)query(rson);
else if(mid>=yy)query(lson);
else query(lson),query(rson);
}
int main()
{
scanf("%d%d",&n,&k);
build(1,n,1);
for(xx=1;xx<=n-k+1;xx++){
yy=xx+k-1,ansmax=-1*0x3fffffff,ansmin=0x3fffffff;
query(1,n,1),ANSMAX[xx]=ansmax,ANSMIN[xx]=ansmin;
}
for(xx=1;xx<=n-k+1;xx++)printf("%d ",ANSMIN[xx]);puts("");
for(xx=1;xx<=n-k+1;xx++)printf("%d ",ANSMAX[xx]);
}

2016.11.16补坑 单调队列 (啊这题好水啊~)

//By SiriusRen
#include <deque>
#include <cstdio>
using namespace std;
int n,m,a[1000500];
struct Node{int pos,weight;Node(){}Node(int x,int y){pos=x,weight=y;}}ans[1000500];
deque<Node>maxx,minn;
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
for(int i=1;i<=n;i++){
if(!maxx.empty()&&maxx.front().pos+m<=i)maxx.pop_front();
if(!minn.empty()&&minn.front().pos+m<=i)minn.pop_front();
while(!maxx.empty()&&maxx.back().weight<=a[i])maxx.pop_back();
while(!minn.empty()&&minn.back().weight>=a[i])minn.pop_back();
maxx.push_back(Node(i,a[i]));minn.push_back(Node(i,a[i]));
ans[i].pos=maxx.front().weight,ans[i].weight=minn.front().weight;
}
for(int i=m;i<=n;i++)printf("%d ",ans[i].weight);putchar('\n');
for(int i=m;i<=n;i++)printf("%d ",ans[i].pos);
}

POJ 2823 线段树 Or 单调队列的更多相关文章

  1. bzoj 1171 并查集优化顺序枚举 | 线段树套单调队列

    详见vfleaking在discuss里的题解. 收获: 当我们要顺序枚举一个序列,并且跳过某些元素,那么我们可以用并查集将要跳过的元素合并到一起,这样当一长串元素需要跳过时,可以O(1)跳过. 暴力 ...

  2. 1304F2 - Animal Observation (hard version) 线段树or单调队列 +DP

    1304F2 - Animal Observation (hard version) 线段树or单调队列 +DP 题意 用摄像机观察动物,有两个摄像机,一个可以放在奇数天,一个可以放在偶数天.摄像机在 ...

  3. POJ 2823 Sliding Window(单调队列 || 线段树)题解

    题意:求每个长度为k的数组的最大值和最小值 思路: 1.用线段树创建维护最大值和最小值,遍历询问,简单复习了一下...有点手生 2.单调队列: 可以看一下详解 单调队列顾名思义就是一个单调递增或者递减 ...

  4. PKU 2823 Sliding Window(线段树||RMQ||单调队列)

    题目大意:原题链接(定长区间求最值) 给定长为n的数组,求出每k个数之间的最小/大值. 解法一:线段树 segtree节点存储区间的最小/大值 Query_min(int p,int l,int r, ...

  5. POJ 2823 Sliding Window 【单调队列】

    题目链接:http://poj.org/problem?id=2823 题目大意:给出一组数,一个固定大小的窗体在这个数组上滑动,要求出每次滑动该窗体内的最大值和最小值. 这就是典型的单调队列,单调队 ...

  6. ACM学习历程—HDU 5289 Assignment(线段树 || RMQ || 单调队列)

    Problem Description Tom owns a company and he is the boss. There are n staffs which are numbered fro ...

  7. 【HDU6701】Make Rounddog Happy【权值线段树+双向单调队列】

    题意:给你一个序列,求满足要求的子序列个数,其中要求为: 1.子序列的max-子序列长度len<=k 2.子序列中不出现重复的数字 题解:首先看到子序列max,很容易想到枚举最大值然后分治,这个 ...

  8. Luogu4085 [USACO17DEC]Haybale Feast (线段树,单调队列)

    \(10^18\)是要long long的. \(nlogn\)单调队列上维护\(logn\)线段树. #include <iostream> #include <cstdio> ...

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

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

随机推荐

  1. CAD绘制一个直径标注(com接口VB语言)

    主要用到函数说明: _DMxDrawX::DrawDimDiametric 绘制一个直径标注.详细说明如下: 参数 说明 DOUBLE dChordPointX 在被标注的曲线上的第一个点X值 DOU ...

  2. 一个好玩的 屏蔽别人审查元素F12 右键及其他复制粘贴等

    有的时候自己写的私下的个人小页面 里面有些自己的小秘密 或者别的东西 不想人别人审查元素看见 所以我提供了一段不让别人审查元素的代码(我个人比较喜欢弄有意思的东西  喜欢玩 ) //屏蔽右键菜单doc ...

  3. matlab数值数据的表示方法,输出数据以及相关函数

    数据类型的分类: 1.整型 无符号整型和带符号整形 带符号整形的最大值是127 >>x=int8(129) 输出结果是x=127 >>x=unit8(129) 输出结果是x=1 ...

  4. 【模板】Link-Cut Tree

    #include<cstdio> #include<algorithm> #define N 500010 #define rg register #define ls (c[ ...

  5. PAT 1109 Group Photo

    Formation is very important when taking a group photo. Given the rules of forming K rows with N peop ...

  6. PAT 1096. Consecutive Factors

    Among all the factors of a positive integer N, there may exist several consecutive numbers. For exam ...

  7. ssm 数据库连接池配置

    1.工程引入druid-1.1.2.jar包2.修改spring-common.xml文件 <!-- 1. 数据源 : DruidDataSource--> <bean id=&qu ...

  8. Spring MVC Beginner's Guide--应该看第二次

    第一遍,就差WEBFLOW知识点没过了.. 真的值得好好再看第二次呢.. 样例工程算是比较多的啦. 学到真的不少..

  9. Android:隐藏ActionBar

    在OnCreate函数中添加:getActionBar().hide();

  10. 虚拟化(四):vsphere高可用功能前提-共享存储搭建

    虚拟化(一):虚拟化及vmware产品介绍 虚拟化(二):虚拟化及vmware workstation产品使用 虚拟化(三):vsphere套件的安装注意及使用 虚拟化(四):vsphere高可用功能 ...