POJ 2823 Sliding Window
来源:互联网 发布:詹姆斯2012总决赛数据 编辑:程序博客网 时间:2024/04/29 22:06
这里考察了单调队列。。。第一次接触到队列,无从下手,看了同学的代码,研究了很久才明白是什么意思。。
#include<stdio.h>
#define MAX 1000001
struct queue{
int p; // 数组下标
int x; // 键值
}m[MAX]={0};
int a[MAX]={0};
int main(){
int N,M,i,head,tail; // head: 头指针 tail: 尾指针
scanf("%d %d",&N,&M);
for(i=0;i<N;i++) scanf("%d",&a[i]);
if(M==1){ // 每个数都是最小值和最大值,因为就一个数
for(i=0;i<N-1;i++) printf("%d ",a[i]);
printf("%d\n",a[N-1]);
for(i=0;i<N-1;i++) printf("%d ",a[i]);
printf("%d\n",a[N-1]);
}
else{
m[0].p=0; m[0].x=a[0];
head=0; tail=0;
for(i=1; i<M && i<N; i++){ // 求 M 个数中的最小值
while(tail>=head && m[tail].x>a[i]) tail--; // 如果待插入的值(a[i]) 比 队尾的值(m[tail].x) 小,则删除队尾
m[++tail].x=a[i]; // 把比 m[tail].x大的第一个数插到队尾 .最终只剩下最小值
m[tail].p=i;
}
if(i<N-1) printf("%d ",m[head].x);
else printf("%d\n",m[head].x);
for(i=M;i<N;i++){
while(tail>=head && m[tail].x>a[i]) tail--;
m[++tail].x=a[i];
m[tail].p=i;
while(head<tail && i-m[head].p>=M) head++;
if(i<N-1) printf("%d ",m[head].x);
else printf("%d\n",m[head].x);
}
m[0].p=0; m[0].x=a[0];
head=0; tail=0;
for(i=1;i<M && i<N;i++){
while(tail>=head && m[tail].x<a[i]) tail--;
m[++tail].x=a[i];
m[tail].p=i;
}
if(i<N-1) printf("%d ",m[head].x);
else printf("%d\n",m[head].x);
for(i=M;i<N;i++){
while(tail>=head && m[tail].x<a[i]) tail--;
m[++tail].x=a[i]; m[tail].p=i;
while(head<tail && i-m[head].p>=M) head++;
if(i<N-1) printf("%d ",m[head].x);
else printf("%d\n",m[head].x);
}
}
return 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
- 一个苹果导航条
- configure: error:" wrong mysql library version or lib not found. Check config.log for more informati
- JAVA 正则表达式
- 小米手机2发布会直播贴(持续更新中)
- 字符串左旋转 //Copyright@ 小桥流水 && July
- POJ 2823 Sliding Window
- 推荐图书
- 【网页制作视频教程】 第02讲 html控制文字标记!-传智播客
- 【RFB】Linux uinput 分析,虚拟鼠标,键盘
- NSDictionary / NSMutableDictionary 及 NSArray / NSmutableArray (实例)
- WCF 服务引用生成代码失败 (Failed to generate code for the service reference )
- iOS的主要框架介绍
- 查看centos版本
- 探索式测试:基本概念