标签:des style blog http color os
| Time Limit: 12000MS | Memory Limit: 65536K | |
| Total Submissions: 36147 | Accepted: 10700 | |
| Case Time Limit: 5000MS | ||
Description
| 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 |
Your task is to determine the maximum and minimum values in the sliding window at each position.
Input
Output
Sample Input
8 3 1 3 -1 -3 5 3 6 7
Sample Output
-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 a<b?a:b;
}
int Max(int a,int b)
{
return a>b?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 f[t].max;
int temp=t*2,mid=(f[t].l+f[t].r)/2;
if(mid>=r)
return fmax(temp,l,r);
else if(mid<l)
return fmax(temp+1,l,r);
else
return Max(fmax(temp,l,mid),fmax(temp+1,mid+1,r));
}
int fmin(int t,int l,int r)
{
if(f[t].l>=l&&f[t].r<=r)
return f[t].min;
int temp=t*2,mid=(f[t].l+f[t].r)/2;
if(mid>=r)
return fmin(temp,l,r);
else if(mid<l)
return fmin(temp+1,l,r);
else
return Min(fmin(temp,l,mid),fmin(temp+1,mid+1,r));
}
int main()
{
int n,m,i;
while(scanf("%d%d",&n,&m)!=-1)
{
for(i=1;i<=n;i++)
scanf("%d",&num[i]);
creat(1,1,n);
int a=1,b,k=0;
while(a<=n-m+1)
{
b=a+m-1;
aa[k]=fmin(1,a,b);
bb[k++]=fmax(1,a,b);
a++;
}
for(i=0;i<n-m;i++)
printf("%d ",aa[i]);
printf("%d\n",aa[n-m]);
for(i=0;i<n-m;i++)
printf("%d ",bb[i]);
printf("%d\n",bb[n-m]);
}
return 0;
}
poj 2823 Sliding Window,码迷,mamicode.com
标签:des style blog http color os
原文地址:http://blog.csdn.net/u011721440/article/details/24627827