时限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. @RequestMapping与controller方法返回值介绍

    @RequestMapping url映射:定义controller方法对应的url,进行处理器映射使用.@RequestMapping(value="/item")或@Reque ...

  2. JAR包中读取资源文件

    我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等).在单独运行的时候这些简单的处理当然不会有问题.但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不出来了.看看 ...

  3. Python---HTML表单

    一. http:80 https:443 -------------------------- 二.

  4. 【转载】文件上传Expected MultipartHttpServletRequest: is a MultipartResolver错误解决

    引入包commons-fileupload-*.jar,版本号可以根据项目情况调整: 在spring mvc配置文件中增加配置,文件大小限制可根据项目情况调整: <!-- 上传文件拦截,设置最大 ...

  5. cogs——66. [HAOI2004模拟] 数列问题

    66. [HAOI2004模拟] 数列问题 本以为会TLE,可... dfs水题(很基础) #include<bits/stdc++.h> using namespace std; ],a ...

  6. SDWC 2018 day5

    望得分:100+100+100 实际得分:100+100+100 Problem 1 晨跑(running.cpp/c/pas)[题目描述]为了响应学校的号召,模范好学生王队长决定晨跑.不过由于种种原 ...

  7. ORM 操作

    官方文档 一.操作 基本操作 # 增 models.Tb1.objects.create(c1='xx', c2='oo') # 增加一条数据,可以接受字典类型数据 **kwargs obj = mo ...

  8. MySQL之视图、触发器、存储过程、函数、事务、数据库锁

    一.视图 视图:是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据. 视图的特点: 1.视图的列可以来自不同的表,是表的抽象和逻辑意义上建立的新关系: 2.视图是由基本 ...

  9. mongodb数据库的导出与导入

    数据库的导出 导出类型为json,数据库:mapdb,集合:bike 字段:bikeId,lat,lng,current_time,source ,条件为source字段为ofo第一条数据 mongo ...

  10. NFA到DFA实例

    下面图使用NFA表示的状态转换图, 使用子集构造法,有如下过程, ε-closure(0) = {0, 1, 2, 3, 4, 6, 7}初始值,令为AA = {0, 1, 2, 3, 4, 6, 7 ...