zoukankan      html  css  js  c++  java
  • 利普希茨

    Description

    solution

    正解:猜结论
    好吧,事实就是答案是相邻的两个元素之差的绝对值的最大值,为什么?
    (a,b,c) 为相邻的三个数,分两种情况讨论

    [frac{c-a}{2}leq b-a ]

    [frac{c-a}{2}leq c-b ]

    化简后

    [2bgeq a+c ]

    [2bleq a+c ]

    两种总有一个成立,所以最优情况一定是相邻两个,线段树维护即可

    #include<algorithm>
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #include<cmath>
    #define RG register
    #define iter iterator
    #define Max(a,b) ((a)>(b)?(a):(b))
    
    using namespace std;
    const int N=1000005;
    int tr[N<<2],a[N],n;
    inline int gi(){
      RG int str=0;RG char ch=getchar();
      while(ch>'9' || ch<'0')ch=getchar();
      while(ch>='0' && ch<='9')str=(str<<1)+(str<<3)+ch-48,ch=getchar();
      return str;
    }
    #define ls (node<<1)
    #define rs (node<<1|1)
    
    inline void build(int l,int r,int node){
      if(l==r){tr[node]=abs(a[r]-a[r-1]);return ;}
      int mid=(l+r)>>1;
      build(l,mid,ls);build(mid+1,r,rs);
      tr[node]=Max(tr[ls],tr[rs]);
    }
    
    inline void ins(int l,int r,int node,int sa){
      if(l==r){tr[node]=abs(a[r]-a[r-1]);return ;}
      int mid=(l+r)>>1;
      if(sa<=mid)ins(l,mid,ls,sa);
      else ins(mid+1,r,rs,sa);
      tr[node]=Max(tr[ls],tr[rs]);
    }
    
    inline int qry(int l,int r,int node,int sa,int se){
      if(l>se || r<sa)return 0;
      if(sa<=l && r<=se)return tr[node];
      int mid=(l+r)>>1;
      int q1=qry(l,mid,ls,sa,se);
      int q2=qry(mid+1,r,rs,sa,se);
      return Max(q1,q2);
    }
    
    void work(){
      n=gi();
      for(int i=1;i<=n;i++)a[i]=gi();
      build(1,n,1);
      int Q=gi(),op,x,y;
      while(Q--){
        op=gi();x=gi();y=gi();
        if(op==0){
          a[x]=y;
          ins(1,n,1,x);
          if(x<n)ins(1,n,1,x+1);
        }
        else printf("%d
    ",qry(1,n,1,x+1,y));
      }
    }
    
    int main(){
      work();
      return 0;
    }
    
    
  • 相关阅读:
    老杳:2017年中国集成电路产业十大新闻
    RMA退货流程解决方案
    Linux
    vue.js
    NET Core度身定制的AOP框架
    Timeline
    HTTP
    MVC 常用扩展点:过滤器、模型绑定等
    装箱拆箱
    jQuery Tree
  • 原文地址:https://www.cnblogs.com/Yuzao/p/7811260.html
Copyright © 2011-2022 走看看