poj2823Sliding Window(线段树求最值)
裸线段树 这题时间卡的挺棒
#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(线段树求最值)的更多相关文章
- HDU1832 二维线段树求最值(模板)
Luck and Love Time Limit: 10000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- POJ3264线段树求最值
刚开始还觉得有点怪怪的.因为想着如果每个树只是单纯地记录它所在的区间的话会不会有不在区间内的数据给更新了,但是我好像是傻掉了因为如果有这种情况出现的话在父亲节点就会分成l,mid和mid+1,r两个区 ...
- 2016年湖南省第十二届大学生计算机程序设计竞赛---Parenthesis(线段树求区间最值)
原题链接 http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1809 Description Bobo has a balanced parenthes ...
- xdoj-1324 (区间离散化-线段树求区间最值)
思想 : 1 优化:题意是覆盖点,将区间看成 (l,r)转化为( l-1,r) 覆盖区间 2 核心:dp[i] 覆盖从1到i区间的最小花费 dp[a[i].r]=min (dp[k])+a[i]s; ...
- hdu 1754 I Hate It (线段树求区间最值)
HDU1754 I Hate It Time Limit:3000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u D ...
- 4163 hzwer与逆序对 (codevs + 权值线段树 + 求逆序对)
题目链接:http://codevs.cn/problem/4163/ 题目:
- HDU6447 YJJ's Salesman-2018CCPC网络赛-线段树求区间最值+离散化+dp
目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog Problem:Portal传送门 原题目描述在最下面. 1e5个点,问 ...
- 【bzoj4695】最假女选手 线段树区间最值操作
题目描述 给定一个长度为 N 序列,编号从 1 到 N .要求支持下面几种操作:1.给一个区间[L,R] 加上一个数x 2.把一个区间[L,R] 里小于x 的数变成x 3.把一个区间[L,R] 里大于 ...
- 【hdu5306】Gorgeous Sequence 线段树区间最值操作
题目描述 给你一个序列,支持三种操作: $0\ x\ y\ t$ :将 $[x,y]$ 内大于 $t$ 的数变为 $t$ :$1\ x\ y$ :求 $[x,y]$ 内所有数的最大值:$2\ x\ y ...
随机推荐
- HTTP Header 详解【转】
原文出自:http://kb.cnblogs.com/page/92320/ HTTP(HyperTextTransferProtocol)即超文本传输协议,目前网页传输的的通用协议.HTTP协议采用 ...
- html5入门信息
1.canvas 1)介绍:HTML5 <canvas> 标签用于绘制图像(通过脚本,通常是 JavaScript).不过,<canvas> 元素本身并没有绘制能力(它仅仅是图 ...
- Cassandra1.2文档学习(17)—— CQL数据模型(上)
参考文档:http://www.datastax.com/documentation/cql/3.0/webhelp/index.html#cql/ddl/ddl_anatomy_table_c.ht ...
- ScrollBox 响应鼠标滚轮和ComboBox禁止滚动
procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: ...
- JavaScript的常见事件和Ajax小结
一.常见事件类型 1.鼠标事件 事件名称 说明 onclick 鼠标单击时触发 ondbclick 鼠标双击时触发 onmousedown 鼠标左键按下时触发 onmouseup 鼠标释放时触发 on ...
- 使用urllib2的HttpResponse导致内存不回收(内存泄漏)
问题出现环境:python 2.7.1(X)及以下, Windows(或CentOS) 这个问题产生在lib/urllib2.py的line 1174 (python 2.7.1),导致形成了cycl ...
- 在emacs里用w3m浏览网页
给w3m配置个~/.emacs老是暴错误,在配置里把这个注掉就OK了;(require 'mime-w3m) ;;支持w3m (add-to-list 'load-path "/usr/sh ...
- Keil V5.1x命令“Build Target”重新编译所有文件
网上的解决办法有多种,但不知道哪一种能对症,以下是我的解决方法:
- 主题: 为kindsoft编辑器替换SyntaxHighlighter代码高亮,整合DEDECMS
作者: fmamcn, 发布日期: 2012-09-29 12:28:39, 浏览数: 1567 看了狼魂发表的将kindeditor中的代码高亮插件prettify换为SyntaxHighlight ...
- Any Way You Slice It (向量旋转 以及 判断线段是否相交)(模板)
http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11353 #include<iostream> # ...