JZOJ 5236. 【NOIP2017模拟8.7A组】利普希茨
5236. 【NOIP2017模拟8.7A组】利普希茨
(File IO): input:lipschitz.in output:lipschitz.out
Time Limits: 1000 ms Memory Limits: 524288 KB Detailed Limits
Description
Input
输入文件名为lipschitz.in。
第一行一个整数n。
接下来一行n个整数,描述序列A。
第三行一个数q 。
接下来q行,每行三个整数。其中第一个整数type表示操作的类型。 type=0对应修改操作, type=1对应查询操作。
Output
输出文件名为lipschitz.out。
对于每个查询,给出f(A[l..r]) 。
Sample Input
输入1:
6
90 50 78 0 96 20
6
0 1 35
1 1 4
0 1 67
0 4 11
0 3 96
1 3 5
输入2:
50
544 944 200 704 400 150 8 964 666 596 850 608 452 103 988 760 370 723 350 862 856 0 724 544 668 891 575 448 16 613 952 745 990 459 740 960 752 194 335 575 525 12 618 80 618 224 240 600 562 283
10
1 6 6
1 1 3
0 11 78279
0 33 42738
0 45 67270
1 1 26
1 19 24
1 37 39
1 8 13
0 7 64428
Sample Output
输出1:
78
85
输出2:
0
744
77683
856
558
77683
Data Constraint
对于30%的数据,n,q<=500
对于60%的数据,n,q<=5000
对于100%的数据,n,q<=100000,0<=ai,val<=10^9
题解
可以转化成坐标
对于每个点(x,y),y表示Ax,先把公式列出来
显然,对于任意两点,|Aj−Ai|j−i求出来的就是斜率
因此,只用找到斜率最大的就可以了
对于ABC三点,lAB的斜率比lAC大
对于ABD三点,lBC的斜率比lAD大
所以,在三点中,一定存在相邻的两点最优
因此f(A)=max|Ai+1−Ai|
用线段树维护一下Ai+1−Ai就行了
代码
#include<cstdio>
#include<algorithm>
#define N 100010
struct node{
long maxx;
node *lc,*rc;
}*head;
void init(node* &now)
{
now=new node;
now->maxx=0;
now->lc=now->rc=NULL;
}
void build(long l,long r,node* &now=head)
{
init(now);
if(l!=r){
long mid=(l+r)>>1;
build(l,mid,now->lc);
build(mid+1,r,now->rc);
}
}
void change(long l,long r,long x,long key,node* &now=head)
{
if(l==r)now->maxx=key;
else{
long mid=(l+r)>>1;
if(x<=mid)
change(l,mid,x,key,now->lc);
else
change(mid+1,r,x,key,now->rc);
now->maxx=std::max(now->lc->maxx,now->rc->maxx);
}
}
long query(long l,long r,long x,long y,node *now=head)
{
if(x<=l&&r<=y)return now->maxx;
else{
long mid=(l+r)>>1,maxx=0;
if(x<=mid)
maxx=std::max(maxx,query(l,mid,x,y,now->lc));
if(y>mid)
maxx=std::max(maxx,query(mid+1,r,x,y,now->rc));
return maxx;
}
}
long a[N];
int main()
{ long n,m,i,x,y,z;
freopen("lipschitz.in","r",stdin);
freopen("lipschitz.out","w",stdout);
scanf("%ld",&n);
build(1,n);
for(i=1;i<=n;i++){
scanf("%ld",&a[i]);
if(i!=1)
change(1,n,i-1,abs(a[i-1]-a[i]));
}
change(1,n,n,a[n]);
scanf("%ld",&m);
for(i=1;i<=m;i++){
scanf("%ld%ld%ld",&x,&y,&z);
if(!x){
a[y]=z;
change(1,n,y-1,abs(a[y-1]-a[y]));
change(1,n,y,abs(a[y]-a[y+1]));
}else
printf("%ld\n",query(1,n,y,z-1));
}
return 0;
}
JZOJ 5236. 【NOIP2017模拟8.7A组】利普希茨的更多相关文章
- JZOJ.5236【NOIP2017模拟8.7】利普希茨
Description
- JZOJ 5235. 【NOIP2017模拟8.7A组】好的排列
5235. [NOIP2017模拟8.7A组]好的排列 (File IO): input:permutation.in output:permutation.out Time Limits: 1000 ...
- [jzoj 5343] [NOIP2017模拟9.3A组] 健美猫 解题报告 (差分)
题目链接: http://172.16.0.132/senior/#main/show/5343 题目: 题解: 记旋转i次之后的答案为$ans_i$,分别考虑每个元素对ans数组的贡献 若$s_i& ...
- JZOJ 5246. 【NOIP2017模拟8.8A组】Trip(trip)
5246. [NOIP2017模拟8.8A组]Trip(trip) (File IO): input:trip.in output:trip.out Time Limits: 1500 ms Memo ...
- JZOJ 3526. 【NOIP2013模拟11.7A组】不等式(solve)
3526. [NOIP2013模拟11.7A组]不等式(solve) (File IO): input:solve.in output:solve.out Time Limits: 1000 ms M ...
- JZOJ 【NOIP2017提高A组模拟9.14】捕老鼠
JZOJ [NOIP2017提高A组模拟9.14]捕老鼠 题目 Description 为了加快社会主义现代化,建设新农村,农夫约(Farmer Jo)决定给农庄里的仓库灭灭鼠.于是,猫被农夫约派去捕 ...
- JZOJ 5230. 【NOIP2017模拟A组模拟8.5】队伍统计
5230. [NOIP2017模拟A组模拟8.5]队伍统计 (File IO): input:count.in output:count.out Time Limits: 1500 ms Memory ...
- JZOJ 4273. 【NOIP2015模拟10.28B组】圣章-精灵使的魔法语
4273. [NOIP2015模拟10.28B组]圣章-精灵使的魔法语 (File IO): input:elf.in output:elf.out Time Limits: 1000 ms Mem ...
- JZOJ 3509. 【NOIP2013模拟11.5B组】倒霉的小C
3509. [NOIP2013模拟11.5B组]倒霉的小C(beats) (File IO): input:beats.in output:beats.out Time Limits: 1000 ms ...
随机推荐
- [HNOI2003]操作系统 优先队列用法
题:https://www.cometoj.com/problem/1046 #include<bits/stdc++.h> using namespace std; typedef lo ...
- python语法基础-异常操作-长期维护
############### python-异常的操作 ############### # 异常:python解释器遇到一个错误,会停止程序的执行,并且提示错误信息,这就是异常, # 抛出异 ...
- imageMso7345.rar
本工具用于Office开发中的customUI设计,查询内置图标的工具. 解压后,有2个Excel文件. 第一个文件的动态图: 第2个文件也可以查询图标: 下载地址: imageMso7345.rar
- mysql数据库-基础--长期维护
############### 数据库 ############## 主要是通过这个学习到什么? 1,库的操作 2,表的操作,包括查询,多表查询,子查询 3,视图,事务,索引,锁, ### ...
- python后端面试第四部分:django框架--长期维护
1 列举Http请求中常见的请求方式 https://www.cnblogs.com/andy0816/p/12360866.html2 谈谈你对HTTP协议的认识.1.1 长连接 https:/ ...
- python学习笔记(4)数据类型-元组
元组其实和列表一样,不一样的是,元组的值不能改变,一旦创建,就不能再改变了,比如说,要存数据库的连接信息,这个连接信息在程序运行中是不能被改变的,如果变了那数据库连不上了,就程序就完犊子了,这样的就可 ...
- 在virtualenv中安装NumPy、 SciPy、 scikit-learn、 matplotlib
首先要进入对应的虚拟环境 然后安装包 这里把安装源改成使用豆瓣的源进行下载 这样的话 下载速度会快很多 安装numpy包 pip install numpy -i https://pypi ...
- deeplearning.ai 神经网络和深度学习 week2 神经网络基础
1. Logistic回归是用于二分分类的算法. 对于m个样本的训练集,我们可能会习惯于使用for循环一个个处理,但在机器学习中,是把每一个样本写成一个列向量x,然后把m个列向量拼成一个矩阵X.这个矩 ...
- 1076 Wifi密码 (15 分)
题目:传送门 下面是微博上流传的一张照片:“各位亲爱的同学们,鉴于大家有时需要使用 wifi,又怕耽误亲们的学习,现将 wifi 密码设置为下列数学题答案:A-1:B-2:C-3:D-4:请同学们自己 ...
- [LC] 746. Min Cost Climbing Stairs
On a staircase, the i-th step has some non-negative cost cost[i] assigned (0 indexed). Once you pay ...