Lightoj1093 【线段树】
题意:
给出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 【线段树】的更多相关文章
- bzoj3932--可持久化线段树
题目大意: 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第 ...
- codevs 1082 线段树练习 3(区间维护)
codevs 1082 线段树练习 3 时间限制: 3 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 给你N个数,有两种操作: 1:给区 ...
- codevs 1576 最长上升子序列的线段树优化
题目:codevs 1576 最长严格上升子序列 链接:http://codevs.cn/problem/1576/ 优化的地方是 1到i-1 中最大的 f[j]值,并且A[j]<A[i] .根 ...
- codevs 1080 线段树点修改
先来介绍一下线段树. 线段树是一个把线段,或者说一个区间储存在二叉树中.如图所示的就是一棵线段树,它维护一个区间的和. 蓝色数字的是线段树的节点在数组中的位置,它表示的区间已经在图上标出,它的值就是这 ...
- codevs 1082 线段树区间求和
codevs 1082 线段树练习3 链接:http://codevs.cn/problem/1082/ sumv是维护求和的线段树,addv是标记这歌节点所在区间还需要加上的值. 我的线段树写法在运 ...
- PYOJ 44. 【HNSDFZ2016 #6】可持久化线段树
#44. [HNSDFZ2016 #6]可持久化线段树 统计 描述 提交 自定义测试 题目描述 现有一序列 AA.您需要写一棵可持久化线段树,以实现如下操作: A v p x:对于版本v的序列,给 A ...
- CF719E(线段树+矩阵快速幂)
题意:给你一个数列a,a[i]表示斐波那契数列的下标为a[i],求区间对应斐波那契数列数字的和,还要求能够维护对区间内所有下标加d的操作 分析:线段树 线段树的每个节点表示(f[i],f[i-1])这 ...
- 【BZOJ-3779】重组病毒 LinkCutTree + 线段树 + DFS序
3779: 重组病毒 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 224 Solved: 95[Submit][Status][Discuss] ...
- 【BZOJ-3673&3674】可持久化并查集 可持久化线段树 + 并查集
3673: 可持久化并查集 by zky Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 1878 Solved: 846[Submit][Status ...
随机推荐
- 02 http协议之方法与状态码
一:HTTP请求信息和响应信息的格式 请求: ()请求行 ()请求头信息 ()请求主体信息(可以没有) () 头信息结束后和主体信息之间要空一行 请求行又分3部分 请求方法 请求路径 所用的协议 请求 ...
- WPF popup控件的使用
<Window x:Class="WPFPopup.RuntimePopup" xmlns="http://schemas.microsoft.com/wi ...
- 开源流媒体服务器EasyDarwin支持epoll网络模型,大大提升流媒体服务器网络并发性能
经过春节前后将近2个月的开发和稳定调试.测试,EasyDarwin开源流媒体服务器终于成功将底层select网络模型修改优化成epoll网络模型,将EasyDarwin流媒体服务器在网络处理的效率上提 ...
- LESS和sa
一. Sass/Scss.Less是什么? Sass (Syntactically Awesome Stylesheets)是一种动态样式语言,Sass语法属于缩排语法,比css比多出好些功能(如变量 ...
- bapi_goodsmvt_create-GR
BAPI_GOODSMVT_CREATE 使用方法 * GMCODE Table T158G - - MB01 - Goods Receipts for Purchase Order * - MB31 ...
- SURF matlab 检测函数使用
1.这篇介绍SURF检测blob的函数. 函数/Functions 函数名称:detectSURFFeatures 功能:利用The Speeded-Up Robust Features(SURF)算 ...
- leetcode leetcode 783. Minimum Distance Between BST Nodes
Given a Binary Search Tree (BST) with the root node root, return the minimum difference between the ...
- Ubuntu下安装Python3.4及用python编译py文件
1.安装python 3.4程序 sudo apt-get install python3.4 2.python 3.4是被默认安装在/usr/local/lib/python3.4,删除默认pyth ...
- hihocoder #1062 : 最近公共祖先·一(小数据量 map+set模拟+标记检查 *【模板】思路 )
#1062 : 最近公共祖先·一 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho最近发现了一个神奇的网站!虽然还不够像58同城那样神奇,但这个网站仍然让小Ho乐在 ...
- 使用eclipse的SVN连接码云
码云配置: 码云的项目上,启用SVN访问 eclipse的配置,不配置这个会报错