链接

裸线段树 这题时间卡的挺棒

 #include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h> using namespace std;
#define N 1000010
#define INF 0xfffffff
int s[N<<],lm[N<<],sm[N<<];
int ma[N],mi[N],o;
void up(int l,int r,int w)
{
lm[w] = min(lm[w<<],lm[w<<|]);
sm[w] = max(sm[w<<],sm[w<<|]);
}
void build(int l,int r,int w)
{
if(l==r)
{
scanf("%d",&s[w]);
lm[w] = sm[w] = s[w];
return ;
}
int m = (l+r)>>;
build(l,m,w<<);
build(m+,r,w<<|);
up(l,r,w);
}
int query1(int a,int b,int l,int r,int w)
{
if(a<=l&&b>=r)
{
return lm[w];
}
int m = (l+r)>>,ans = INF;
if(a<=m)
ans = query1(a,b,l,m,w<<);
if(b>m)
ans = min(ans,query1(a,b,m+,r,w<<|));
return ans;
}
int query2(int a,int b,int l,int r,int w)
{
if(a<=l&&b>=r)
{
return sm[w];
}
int m = (l+r)>>,ans = -INF;
if(a<=m)
ans = query2(a,b,l,m,w<<);
if(b>m)
ans = max(ans,query2(a,b,m+,r,w<<|));
return ans;
}
int main()
{
int i,n,k;
while(scanf("%d%d",&n,&k)!=EOF)
{
build(,n,);
o = ;
mi[] = query1(,k,,n,);
ma[] = query2(,k,,n,);
for(i = ; i <= n-k+ ; i++)
{
o++;
mi[o] = query1(i,i+k-,,n,);
ma[o] = query2(i,i+k-,,n,);
}
for(i = ; i < o ; i++)
printf("%d ",mi[i]);
printf("%d\n",mi[o]);
for(i = ; i < o ; i++)
printf("%d ",ma[i]);
printf("%d\n",ma[o]);
}
return ;
}

poj2823Sliding Window(线段树求最值)的更多相关文章

  1. HDU1832 二维线段树求最值(模板)

    Luck and Love Time Limit: 10000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...

  2. POJ3264线段树求最值

    刚开始还觉得有点怪怪的.因为想着如果每个树只是单纯地记录它所在的区间的话会不会有不在区间内的数据给更新了,但是我好像是傻掉了因为如果有这种情况出现的话在父亲节点就会分成l,mid和mid+1,r两个区 ...

  3. 2016年湖南省第十二届大学生计算机程序设计竞赛---Parenthesis(线段树求区间最值)

    原题链接 http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1809 Description Bobo has a balanced parenthes ...

  4. xdoj-1324 (区间离散化-线段树求区间最值)

    思想 : 1 优化:题意是覆盖点,将区间看成 (l,r)转化为( l-1,r) 覆盖区间 2 核心:dp[i]  覆盖从1到i区间的最小花费 dp[a[i].r]=min (dp[k])+a[i]s; ...

  5. hdu 1754 I Hate It (线段树求区间最值)

    HDU1754 I Hate It Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u D ...

  6. 4163 hzwer与逆序对 (codevs + 权值线段树 + 求逆序对)

    题目链接:http://codevs.cn/problem/4163/ 题目:

  7. HDU6447 YJJ's Salesman-2018CCPC网络赛-线段树求区间最值+离散化+dp

    目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog Problem:Portal传送门  原题目描述在最下面.  1e5个点,问 ...

  8. 【bzoj4695】最假女选手 线段树区间最值操作

    题目描述 给定一个长度为 N 序列,编号从 1 到 N .要求支持下面几种操作:1.给一个区间[L,R] 加上一个数x 2.把一个区间[L,R] 里小于x 的数变成x 3.把一个区间[L,R] 里大于 ...

  9. 【hdu5306】Gorgeous Sequence 线段树区间最值操作

    题目描述 给你一个序列,支持三种操作: $0\ x\ y\ t$ :将 $[x,y]$ 内大于 $t$ 的数变为 $t$ :$1\ x\ y$ :求 $[x,y]$ 内所有数的最大值:$2\ x\ y ...

随机推荐

  1. Web前端的35个jQuery小技巧

    1. 禁止右键点击 $(document).ready(function(){     $(document).bind("contextmenu",function(e){   ...

  2. 如何解决NTLDR is missing

    问题:ntldr文件不见了,无法进入系统.本系统win XP 简体中文32位 解决步骤: (1)我找来一张win XP 英文版 32位的系统光盘(用U盘驱动也行) (2)重新启动计算机,并进入CMOS ...

  3. ZOJ 1074 最大子矩阵和

    Description Given a two-dimensional array of positive and negative integers, a sub-rectangle is any ...

  4. easy ui 表单ajax和from两种提交数据方法

    说明: ①ajax在表单提交时需要将所有表单的控件的数据一一获取并赋值传到后台 ②form在提交时,只要给控件加name属性,在提交时就可以将表单数据提交到后台,不需要一一获取再进行赋值. ajax ...

  5. 【学习总结】IOS程序运行过程 、UIWindow 、controller 、 UIView 创建过程的总结

    程序启动开始到view显示: 程序启动首先会执行main函数 - > UIApplicationMain函数: 程序启动 (加载框架,info文件,资源等) 执行Main函数 初始化UIAppl ...

  6. js模拟触发事件

     html标签元素封装着实用的[事件],但在很多时候,需要[模拟触发事件],比如 [按钮单机事件]  可以实实在在点击按钮触发该事件,但体验而言,很多时候需要js逻辑处理让实现 触发事件的效果这时就用 ...

  7. python学习笔记10(函数一): 函数使用、调用、返回值

    一.函数的定义 在某些编程语言当中,函数声明和函数定义是区分开的(在这些编程语言当中函数声明和函数定义可以出现在不同的文件中,比如C语言),但是在Python中,函数声明和函数定义是视为一体的.在Py ...

  8. xcode 6.3 打包crash问题--参考

    xcode升级6.3之后,有些项目会出现打包crash的问题,只要选择偏好设置,把source control全部禁用掉就可以了.

  9. Flume学习——BasicChannelSemantics

    public class MemoryChannel extends BasicChannelSemantics public abstract class BasicChannelSemantics ...

  10. Python SyntaxError: Non-ASCII character '\xe5'

    error: SyntaxError: Non-ASCII character '\xe5' in file D:\worklife\workshop\myCrawler\src\mainDriver ...