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 ...
随机推荐
- python(四)数据持久化操作 文件存储
1.写入 导入pickle包 然后组织一个列表my_list,保存为pkl格式,可以是任意格式 在磁盘下回出现一个保存的文件 2.读取
- TCP三次握手原理与SYN攻击
本文内容包括以下几点 1.TCP三次握手四次挥手解析 2.迭代型服务器程序编写,并给出客户端,结合这一模式详细介绍Berkeley套接字的使用 3.介绍SYN攻击的原理 TCP连接建立,传输数据,连接 ...
- firefox 自定义快捷键
firefox 更新到44或45,发现原来的更改快捷键的扩展没了!!!
- 一个基于python的即时通信程序
5月17日更新: 广播信息.用户列表.信息确认列表以及通信信息,从原来的用字符串存储改为使用字典来存储,使代码更清晰,更容易扩展,具体更改的格式如下: 广播信息(上线): { 'status': 信息 ...
- 扩展ServiceHost<T>类
public class ServiceHost<T> : ServiceHost { public void EnableMetadataExchange(bool enableHttp ...
- 1036. Boys vs Girls (25)
#include <stdio.h>#include <string.h>int main(){ int n,i; while(scanf("%d",&am ...
- CC2640-之功耗
一.测量方式,以DEMO板测量,以消除其它外围不同造成的电流不同. 二.测量结果 以原厂simpleBLEperipheral工程为例 1.如果在低功耗模式下,+5DB发射,最小电流为1.66MA 2 ...
- (转)Qt Model/View 学习笔记 (三)——Model类
Model类 基本概念 在model/view构架中,model为view和delegates使用数据提供了标准接口.在Qt中,标准接口QAbstractItemModel类中被定义.不管数据在底层以 ...
- Oracle全表扫描
优化器在形成执行计划时需要做的一个重要选择——如何从数据库查询出需要的数据.对于SQL语句存取的任何表中的任何行,可能存在许多存取路径(存取方法),通过它们可以定位和查询出需要的数据.优化器选择其中自 ...
- Mysql grant权限管理
MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 to 用户 [identified by '密码'] 最常用的,弄主从同步的时候,给从库的slave用户设置拥有所 ...