zoukankan      html  css  js  c++  java
  • 杂—序列操作,数据结构有关

    题目:给出一个序列,给出m对左右端点,询问这m个区间的最大值。

    题解:用单调栈维护每个数左边第一个比它大的数,询问一个区间 [l,r] 的时候,找到比 r 大的数中位置不在l之前的。将每个数之前第一个比它大的数建为一棵树,按照区间询问的左端点排序,进行路径压缩。

    题目:给定一个正整数序列,求出所有子区间中第k小。

    题解:数组的值均为正整数,想到二分总值。子区间的和,我们当然用前缀和优化

    题目:给定一个序列,求环形最大子段和。

    题解:处理环形问题,一般在后面复制一遍原序列。然后跟上一题一样写吗。。。本题条件序列不一定为正整数哇。套用上一题失效。其实只要做一遍最大子段和和最小子段和,并且保证最大最小子段的左右端点不包含且不相交即可。答案为最大子段和减去最小子段和。

    题目:给定序列,要求最大化区间最值相减除以区间长度的值。

    题解:当已知最大最小值时,为使答案最优,应取区间使最大最小值为左右端点,使区间长度最短。

    不妨设a[r]>a[l],那么将上式转化成:(a[r]-a[l])/(r-l+k).

    考虑差分序列a,设d[i] = a[i]-a[i-1],上式转化为(d[l+1]+d[l+2]+...+d[r])/(r-l+k)。

    再略加转换,即为带长度限制的最大子段和问题。 

  • 相关阅读:
    SpringCloud 基础知识
    Spring 相关知识
    Java JDBC学习笔记
    Java JVM 相关基础知识
    ES6 块状绑定
    Docker 安装(window7)及基本命令
    Node.js 安装(Window7)及基本npm命令
    flask 模型类中relationship的使用及其参数backref的说明,
    flask中的状态保持(cookie,session)
    flask中request的属性说明
  • 原文地址:https://www.cnblogs.com/ve-2021/p/9918263.html
Copyright © 2011-2022 走看看