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)。

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

  • 相关阅读:
    django第八天总结
    获取文件名的基本信息
    单个文件上传与多个文件上传
    return .php
    upload.php
    string.php
    upload.php
    upload.html
    获取上传文件
    那些年被我坑过的Python——牵一发动全身 第十一章MySQL、ORM
  • 原文地址:https://www.cnblogs.com/ve-2021/p/9918263.html
Copyright © 2011-2022 走看看