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 ...
随机推荐
- 【原】web页面登陆验证
using Itcast.Mall.Model; using System; using System.Collections.Generic; using System.Linq; using Sy ...
- YII千万级PV架构经验分享--俯瞰篇--架构即产品
hello,大家好,我是方少,今天想问大家一个问题,如果我们自己就是产品,那么我们怎样才能说服别人,我们是最优秀的呢?高学历,不错,别人成功过了.会php,java,c#,python不行再学c++, ...
- NFS网络文件共享服务
NFS-网络文件系统,它的主要功能是通过网络让不同的主机系统之间可以彼此共享文件或目录. NFS在企业中得应用场景 在企业集群架构的工作场景中,NFS网络文件系统一般被用来存储共享视频.图片.附件等静 ...
- flash memory
数据删除不是以单个的字节为单位而是以固定的区块为单位(注意:NOR Flash 为字节存储.),区块大小一般为256KB到20MB. 由于其断电时仍能保存数据,闪存通常被用来保存设置信息,如在电脑的B ...
- WPF 中 TreeListView 的使用
前段时间在项目开发中需要用 TreeListView 的功能,于是在网上狂搜一通,倒也找到了几个小例子,但还是满足不了我简单的要求,由于时间紧也只能折中凑合着用了.最近时间比较充裕,把其中的例子整理一 ...
- Mooncake (排序+贪心)
Mooncake is a Chinese bakery product traditionally eaten during the Mid-Autumn Festival. Many types ...
- Determining IP information for eth0… failed; no link present. Check cable
[root@hexuweb101 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0添加下面代码: check_link_down () { return ...
- 首页banner焦点图自动轮播效果
今天来介绍一下我前两天写一个小任务的时候遇到的一些问题,如果能够有所帮助或者启发,那将是我的荣幸. <div class="banner"> <a class=& ...
- 1047: [HAOI2007]理想的正方形 - BZOJ
Description 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小.Input 第一行为3个整数,分别表示a,b,n的值第二行至第a ...
- maven 编译部署src/main/java下的资源文件
maven 编译部署src/main/java下的资源文件 maven默认会把src/main/resources下的所有配置文件以及src/main/java下的所有java文件打包或发布到targ ...