zoukankan      html  css  js  c++  java
  • 杂题

    题意

    有一个贪心求最大子段和的方法,将负数位置去掉,比较各段和的最大值
    现给出长度为(2n-1)的序列,对于奇数位置,已经有数了,你需要在偶数位置填入(in[-K,K])的整数,求正确答案与贪心答案最大差
    (nle 5000,Kle 10^5)

    做法

    结论1:每个位置要么填(-1),要么填(K)

    对于已有数已经为负的情况,是可以分割的。考虑平凡情况:已有数均(ge 0)
    (f_{k,i})为前(i)个位置,填了(k)(-1),贪心答案的最小值
    (f_{k,i}=min{max(f_{k-1,j},sum_i-sum_j)})

    结论2:固定(k,i),存在分界点,使得在([1,alpha])最大值为(sum_i-sum_j)((alpha,i))最大值为(f_{k-1,j})

    固定(k),令(g_i)(f_{k,i})的分界点
    结论3(g_i)是不降的

    证明:
    满足最大值为(sum_i-sum_j)的条件为(f_{k-1,j}le sum_i-sum_jLongrightarrow sum_ige f_{k-1,j}+sum_j)
    由于(sum_i)是不降的,故分界点也不降

    于是可以做到(O(n^2))

  • 相关阅读:
    kubernetes系列(十四)
    kubernetes系列(十三)
    kubernetes系列(十二)
    kubernetes系列(十一)
    kubernetes系列(十)
    kubernetes系列(九)
    kubernetes系列(八)
    MySQL命令(其三)
    MySQL操作命令(其二)
    MySQL命令(其一)
  • 原文地址:https://www.cnblogs.com/Grice/p/13871320.html
Copyright © 2011-2022 走看看