题意:

给出n个数,然后对于D区间的数求一个最大差值

思路:

区间最大最小。。。我居然没想到线段树。。。

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=1e5+10; struct SegT{
int left;
int right;
int mid;
int tmin,tmax;
};
SegT q[N*4];
int n; void Build(int num,int L ,int R)
{
int mid;
q[num].left=L;
q[num].right=R;
mid=(L+R)/2;
if(L==R)
{
scanf("%d",&q[num].tmax);
q[num].tmin=q[num].tmax;
return;
}
Build(2*num,L,mid);
Build(2*num+1,mid+1,R);
q[num].tmin=min(q[2*num].tmin,q[2*num+1].tmin);
q[num].tmax=max(q[2*num].tmax,q[2*num+1].tmax);
} int query_min(int num,int s, int t)
{
if(q[num].left>=s&&q[num].right<=t)
return q[num].tmin;
int mid=(q[num].left+q[num].right)/2;
if(mid>=t)
return query_min(2*num,s,t);
else if(mid<s)
return query_min(2*num+1,s,t);
else
return min(query_min(2*num,s,mid),query_min(2*num+1,mid+1,t));
} int query_max(int num,int s, int t)
{
if(q[num].left>=s&&q[num].right<=t)
return q[num].tmax;
int mid=(q[num].left+q[num].right)/2;
if(mid>=t)
return query_max(2*num,s,t);
else if(mid<s)
return query_max(2*num+1,s,t);
else
return max(query_max(2*num,s,mid),query_max(2*num+1,mid+1,t));
} int main()
{
int T,cas=1,d;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&d);
Build(1,1,n);
int ans=0;
for(int i=1;i<=(n-d+1);i++)
{
ans=max(ans,abs(query_max(1,i,i+d-1)-query_min(1,i,i+d-1)));
}
printf("Case %d: %d\n",cas++,ans);
}
return 0;
}

Lightoj1093 【线段树】的更多相关文章

  1. bzoj3932--可持久化线段树

    题目大意: 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第 ...

  2. codevs 1082 线段树练习 3(区间维护)

    codevs 1082 线段树练习 3  时间限制: 3 s  空间限制: 128000 KB  题目等级 : 大师 Master 题目描述 Description 给你N个数,有两种操作: 1:给区 ...

  3. codevs 1576 最长上升子序列的线段树优化

    题目:codevs 1576 最长严格上升子序列 链接:http://codevs.cn/problem/1576/ 优化的地方是 1到i-1 中最大的 f[j]值,并且A[j]<A[i] .根 ...

  4. codevs 1080 线段树点修改

    先来介绍一下线段树. 线段树是一个把线段,或者说一个区间储存在二叉树中.如图所示的就是一棵线段树,它维护一个区间的和. 蓝色数字的是线段树的节点在数组中的位置,它表示的区间已经在图上标出,它的值就是这 ...

  5. codevs 1082 线段树区间求和

    codevs 1082 线段树练习3 链接:http://codevs.cn/problem/1082/ sumv是维护求和的线段树,addv是标记这歌节点所在区间还需要加上的值. 我的线段树写法在运 ...

  6. PYOJ 44. 【HNSDFZ2016 #6】可持久化线段树

    #44. [HNSDFZ2016 #6]可持久化线段树 统计 描述 提交 自定义测试 题目描述 现有一序列 AA.您需要写一棵可持久化线段树,以实现如下操作: A v p x:对于版本v的序列,给 A ...

  7. CF719E(线段树+矩阵快速幂)

    题意:给你一个数列a,a[i]表示斐波那契数列的下标为a[i],求区间对应斐波那契数列数字的和,还要求能够维护对区间内所有下标加d的操作 分析:线段树 线段树的每个节点表示(f[i],f[i-1])这 ...

  8. 【BZOJ-3779】重组病毒 LinkCutTree + 线段树 + DFS序

    3779: 重组病毒 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 224  Solved: 95[Submit][Status][Discuss] ...

  9. 【BZOJ-3673&3674】可持久化并查集 可持久化线段树 + 并查集

    3673: 可持久化并查集 by zky Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 1878  Solved: 846[Submit][Status ...

随机推荐

  1. 解决Android Studio下Element layer-list must be declared问题

    近期将一个项目从Eclipse转到Android Studio. 项目中使用了环信demo中的一些xml资源,转换后发现color资源目录下诸如layer-list或者shape等标签报Element ...

  2. WPF中的数据绑定Data Binding使用小结

    完整的数据绑定的语法说明可以在这里查看: http://www.nbdtech.com/Free/WpfBinding.pdf MSDN资料: Data Binding: Part 1 http:// ...

  3. 【百度之星初赛A】路径交 LCA+线段树

    [百度之星初赛A]路径交 Problem Description 给定一棵n个点的树,以及m条路径,每次询问第L条到第R条路径的交集部分的长度(如果一条边同时出现在2条路径上,那么它属于路径的交集). ...

  4. Java Virtual Machine (JVM) objects 虚拟机实例的产生 退出 两种线程

    Apache Spark is built around a distributed collection of immutable Java Virtual Machine (JVM) object ...

  5. 最简单的基于FFMPEG的Helloworld程序

    ===================================================== 最简单的基于FFmpeg的视频播放器系列文章列表: 100行代码实现最简单的基于FFMPEG ...

  6. Mongoose学习(1)

    1.Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力    Model : 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对    Entity : 由Mod ...

  7. IDEA 打开多个项目

    简单的说只需要以下几步: 1.将需要同时打开的模块放在一个文件夹下,e.g. AModel 和 BModel 同时放在 Project 文件夹下. 2.在 IDEA 初始导入项目页面选择 open - ...

  8. delphi如何让程序最小化到任务栏(使用Shell_NotifyIcon API函数)

    现在很多的应用程序都有这样一种功能,当用户选择最小化窗口时,窗口不是象平常那样最小化到任务栏上,而是“最小化”成一个任务栏图标.象FoxMail 3.0 NetVampire 3.0等都提供了这样的功 ...

  9. Ubuntu下安装Android studio【转】

    本文转载自:http://blog.csdn.net/walleit/article/details/65696712 版权声明:本文为博主原创文章,未经博主允许不得转载. 一,软件准备 1. Lin ...

  10. jquery中attr和prop的区别—判断复选框选中状态

    最近项目中需要用jquery判断input里checkbox是否被选中,发现用attr()获取不到复选框改变后的状态,最后查资料发现jQuery 1.6以后新增加了prop()方法,借用官方的一段描述 ...