POJ 2823 Sliding Window
来源:互联网 发布:本周重要财经数据 编辑:程序博客网 时间:2024/06/05 12:02
题意很简单,给出n,m。查询连续m个数的最大值和最小值。
我用线段树 裸的。有人用的单调队列。
不过很忧伤的是G++ TLE,但是C++ AC了。
#include<cstdio>#include<cstring>#include<string>#include<queue>#include<algorithm>#include<map>#include<stack>#include<iostream>#include<list>#include<set>#include<bitset>#include<vector>#include<cmath>#define INF 0x7fffffff#define eps 1e-8#define LL long long#define PI 3.141592654#define CLR(a,b) memset(a,b,sizeof(a))#define FOR(i,a,b) for(int i=a;i<b;i++)#define FOR_(i,a,b) for(int i=a;i>=b;i--)#define sf scanf#define pf printf#define all(v) (v).begin(),(v).end()#define acfun std::ios::sync_with_stdio(false)#define SIZE (1000000 +1)#define MOD 1000000007using namespace std;int arr[SIZE*3];int _max[SIZE*3];int _min[SIZE*3];void build(int l,int r,int o){ if(l==r) { _max[o]=arr[l]; _min[o]=arr[l]; } else { int m=(l+r)>>1;; build(l,m,o*2); build(m+1,r,o*2+1); _max[o]=max(_max[o*2],_max[o*2+1]); _min[o]=min(_min[o*2],_min[o*2+1]); }}int ql,qr;int minans,maxans;void query(int l,int r,int o){ if(ql<=l&&qr>=r) { minans=min(minans,_min[o]); maxans=max(maxans,_max[o]); } else { int m=(l+r)>>1; if(ql<=m)query(l,m,o*2); if(qr>m)query(m+1,r,o*2+1); }}int resmax[SIZE];int resmin[SIZE];int main(){ int n,m; while(~sf("%d%d",&n,&m)) { FOR(i,1,n+1) sf("%d",&arr[i]); build(1,n,1); FOR(i,1,n-m+2) { minans=INF,maxans=-INF; ql=i,qr=i+m-1; //pf("%d -- %d\n",ql,qr); query(1,n,1); resmax[i]=maxans; resmin[i]=minans; } FOR(i,1,n-m+1) pf("%d ",resmin[i]); pf("%d\n",resmin[n-m+1]); FOR(i,1,n-m+1) pf("%d ",resmax[i]); pf("%d\n",resmax[n-m+1]); }}
0 0
- POJ 2823 Sliding Window
- poj 2823 Sliding Window
- poj 2823 Sliding Window
- POJ 2823 Sliding Window
- POJ-2823-Sliding Window
- POJ 2823 Sliding Window
- POJ 2823 Sliding Window
- POJ 2823 Sliding Window
- poj 2823 Sliding Window
- POJ 2823(Sliding Window)
- POJ-2823-Sliding Window
- poj 2823 Sliding Window
- POJ 2823 Sliding Window
- POJ 2823 Sliding Window
- Sliding Window poj 2823
- POJ 2823 Sliding Window
- poj 2823 Sliding Window
- POJ 2823 Sliding Window
- 在项目中使用Sass
- MFC 打印调试的三种方法
- CSDN这个家比博客园温馨好多啊,我要搬家了。。。
- LInux 配置网络
- SignalR 学习 -HelloWorld
- POJ 2823 Sliding Window
- 队列LinkedBlockingQueue学习
- FastJSON 应用介绍
- Python学习
- ibatis高级查询技术的使用
- MDK5.14 安装过程
- 什么是java序列化,如何实现java序列化?
- 老人不能被遗忘在移动互联之外!
- memcpy的用法总结