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 ...
随机推荐
- LeetCode(88)题解-- Merge Sorted Array
https://leetcode.com/problems/merge-sorted-array/ 题目: Given two sorted integer arrays nums1 and nums ...
- 导入EXCEL 时间数据为小数 问题
同事在做将EXCEL导入数据库功能时发现一个奇怪的问题:在EXCEL中,有一列数据明明呈现出时间格式,比如:18:35,但导到数据库中,居然一串长长的小数:0.7743055555555556,我靠, ...
- 九度OJ 1090:路径打印 (树、DFS)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1704 解决:314 题目描述: 给你一串路径,譬如: a\b\c a\d\e b\cst d\ 你把这些路径中蕴含的目录结构给画出来,子目 ...
- Local Response Normalization 60 million parameters and 500,000 neurons
CNN是工具,在图像识别中是发现图像中待识别对象的特征的工具,是剔除对识别结果无用信息的工具. ImageNet Classification with Deep Convolutional Neur ...
- java的多生产者多消费者例子
import java.util.concurrent.locks.*; public class Test9 { public static void main(String[] args) { / ...
- HTTP Status 405
分析原因: 1.doPost()和getPost()两个方法继承了父类,造成出错.
- ABAP读取工单状态 STATUS_READ
*&---------------------------------------------------------------------* *& Report YDEMO_013 ...
- memset 导致的段错误(segmentation fault)
在调试Minixml库时,定义了一个结构体: struct ssid_info_s{ std::string wl_ssid_name; std::string wl_ssid_mac; std::s ...
- Proxy Pattern
1.Proxy Pattern最大的好处就是实现了逻辑和实现的彻底解耦. 2.Proxy Pattern结构图 3.实现 #ifndef _PROXY_H_ #define _PROXY_H_ cla ...
- ZOJ - 3935 2016 【数的筛选】
题目链接 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3935 题意 要求找出 从 2016-990528 中 是闰年 并 ...