poj 2823 Sliding Window
2020-12-02 04:46
标签:des style blog http color os Description Your task is to determine the maximum and minimum values in the sliding window at each position. Input Output Sample Input Sample Output
poj 2823 Sliding Window,搜素材,soscw.com poj 2823 Sliding Window 标签:des style blog http color os 原文地址:http://blog.csdn.net/u011721440/article/details/24627827
Time Limit: 12000MS
Memory Limit: 65536K
Total Submissions: 36147
Accepted: 10700
Case Time Limit: 5000MS
The array is [1 3 -1 -3 5 3 6 7], and k is 3.
Window position
Minimum value
Maximum value
[1 3 -1] -3 5 3 6 7
-1
3
1 [3 -1 -3] 5 3 6 7
-3
3
1 3 [-1 -3 5] 3 6 7
-3
5
1 3 -1 [-3 5 3] 6 7
-3
5
1 3 -1 -3 [5 3 6] 7
3
6
1 3 -1 -3 5 [3 6 7]
3
7
8 3
1 3 -1 -3 5 3 6 7
-1 -3 -3 -3 3 3
3 3 5 5 6 7
线段树、区间求最值
#include"stdio.h"
#include"string.h"
#define N 1000005
int num[N];
int aa[N],bb[N]; //记录最大最小值
struct node
{
int l,r,num,min,max;
}f[N*3];
int Min(int a,int b)
{
return ab?a:b;
}
void creat(int t,int l,int r)
{
f[t].l=l;
f[t].r=r;
if(l==r)
{
f[t].num=f[t].max=f[t].min=num[r];
return ;
}
int temp=t*2,mid=(l+r)/2;
creat(temp,l,mid);
creat(temp+1,mid+1,r);
f[t].max=Max(f[temp].max,f[temp+1].max);
f[t].min=Min(f[temp].min,f[temp+1].min);
return ;
}
int fmax(int t,int l,int r)
{
if(f[t].l>=l&&f[t].r=r)
return fmax(temp,l,r);
else if(mid
上一篇:win7+ubuntu双系统安装