poj 2823 线段树求区间最值
来源:互联网 发布:java 国内书籍 编辑:程序博客网 时间:2024/05/29 19:45
poj 2823
#include<stdio.h>#include<string.h>#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define maxn 1001020#define INF 1<<30int min(int a,int b){ return a>b?b:a;}int max(int a,int b){ return a>b?a:b;}int n,k,h[2];int da[maxn<<4],xiao[maxn<<4];int ans1[maxn],ans2[maxn];void PushUp(int rt){ da[rt]=max(da[rt<<1],da[rt<<1|1]); xiao[rt]=min(xiao[rt<<1],xiao[rt<<1|1]);}void build(int l,int r,int rt){ if(l==r) { scanf("%d",&da[rt]); xiao[rt]=da[rt]; return; } int m=(l+r)>>1; build(lson); build(rson); PushUp(rt);}void query(int L,int R,int l,int r,int rt,int a[]){ if(L<=l&&r<=R) { a[0]=max(da[rt],a[0]); a[1]=min(xiao[rt],a[1]); return ; } int m=(l+r)>>1; int v=0; if(L<=m) query(L,R,lson,a); if(R>m) query(L,R,rson,a);}int main(){ int i,j,k,l; while(~scanf("%d %d",&n,&k)) { build(1,n,1); for(i=1;i<=n-k+1;i++) { h[0]=-INF; h[1]=INF; query(i,i+k-1,1,n,1,h); ans1[i]=h[0]; ans2[i]=h[1]; } for(i=1;i<=n-k+1;i++) { printf("%d ",ans2[i]); } printf("\n"); for(i=1;i<=n-k+1;i++) { printf("%d ",ans1[i]); } printf("\n"); } return 0;}
- poj 2823 线段树求区间最值
- poj 3875 RMQ或线段树求区间最值
- POJ 3264 Balanced Lineup 求线段树区间最值
- 线段树求区间最值
- 线段树求区间最值
- POJ2823(线段树求区间最值)
- POJ 3264 Balanced Lineup 线段树 单点更新 求区间最值
- POJ2823 - 线段树求区间的最值..
- 线段树三:求任意区间的最值
- hdu1754 求区间最值 线段树 树状数组
- hdu_1754,线段树单点更新,求区间最值
- hdu1754 I Hate It 线段树求区间最值
- LightOJ Array Queries 1082【线段树求区间最值】
- HDU1754 线段树 + 裸 + 单点更新求区间最值
- 【线段树求区间最值】玲珑oj 1128
- poj 2823 线段树 求固定区间的最大最小值
- poj 3667 Hotel(线段树求区间连续值)
- poj Balanced Lineup (线段树区间最值+优化)
- C#中keybd_event 用法及键码参照
- 【EhCache】Java缓存框架使用EhCache结合Spring AOP
- 值得推荐的iPhone开发资源汇总(3)
- Oracle PL\SQL操作(一)
- C#制作Windows service服务系列一:制作一个可安装、可启动、可停止、可卸载的Windows service
- poj 2823 线段树求区间最值
- 递归
- C#制作Windows service服务系列二--演示一个定期执行的windows服务及调试
- Posting only possible in periods 2013/02 and 2013/01 in company code 0001
- 学习Hibernate
- C#制作Windows service服务系列三--制作可控制界面的Windows服务(windows service)
- Tomcat Remote Debug
- ffmpeg开发指南
- c++智能指针auto_ptr和shared_ptr