博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 2823 线段树 Or 单调队列
阅读量:6596 次
发布时间:2019-06-24

本文共 2025 字,大约阅读时间需要 6 分钟。

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

//By SiriusRen#include 
#include
#include
#define N 1000001#define lson l,mid,pos*2#define rson mid+1,r,pos*2+1using 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
=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 
#include
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
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);}

转载于:https://www.cnblogs.com/SiriusRen/p/6532434.html

你可能感兴趣的文章
Linux/Unix的精巧约定两例及其简析:目录权限和文本行数
查看>>
WebDAV助手1.1.0更新
查看>>
[CTSC2018]青蕈领主
查看>>
原型继承
查看>>
找不到ifconfig命令
查看>>
微服务事务处理
查看>>
用Groovy进行单元测试
查看>>
github地址
查看>>
nginx使用
查看>>
两个openssh间免密码登录
查看>>
【linux】 linux gpio操作
查看>>
【linux kernel】 softirq 软中断讨论
查看>>
2019武汉大学数学专业考研真题(回忆版)
查看>>
百度地图车辆运动轨迹
查看>>
RE模块错误已解决.
查看>>
ant使用指南详细入门教程
查看>>
文本与字体
查看>>
汕头市队赛 yyl杯1 T1
查看>>
从函数式编程到Ramda函数库(一)
查看>>
ora-1652
查看>>