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 ...
 
随机推荐
- ubuntu Python 升级
			
安装时ubuntu提示: DEPRECATION: Python 3.4 support has been deprecated. pip 19.1 will be the last one supp ...
 - PAT甲级——1019 General Palindromic Number
			
A number that will be the same when it is written forwards or backwards is known as a Palindromic Nu ...
 - 吴裕雄--天生自然python学习笔记:人脸识别用到的特征文件haarcascade_frontalface_default.xml下载
			
下载地址:https://github.com/opencv/opencv/tree/master/data/haarcascades 1.找到haarcascade_frontalface_defa ...
 - relieved|auction|calculate|campaign|charge for |chartered
			
ADJ-GRADED 感到宽慰的;感到安心的;宽心的If you are relieved, you feel happy because something unpleasant has not h ...
 - java基础之异常 · fossi
			
在开发中,异常处理是一个不可绕开的话题,我们对于异常的处理已经非常熟练了,对于异常本身的概念.用法等不再赘述了,直接结合面试问题来加深对异常的理解吧. Throwable 可以用来表示任何可以作为异常 ...
 - OpenCV 改变图像的对比度和亮度
			
#include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <ios ...
 - sm3算法的简单介绍
			
转自:https://blog.csdn.net/hugewaves/article/details/53765063 SM3算法也是一种哈希算法,中国国家密码管理局在2010年发布,其名称是SM3密 ...
 - python3下scrapy爬虫(第三卷:初步抓取网页内容之抓取网页里的指定数据)
			
上一卷中我们抓取了网页的所有内容,现在我们抓取下网页的图片名称以及连接 现在我再新建个爬虫文件,名称设置为crawler2 做爬虫的朋友应该知道,网页里的数据都是用文本或者块级标签包裹着的,scrap ...
 - 吴裕雄--天生自然HTML学习笔记:HTML 图像
			
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
 - java增强型for循环
			
http://blog.csdn.net/itmyhome1990/article/details/8797005