zoukankan      html  css  js  c++  java
  • #14 [BZOJ2090/2089] [Poi2010]Monotonicity 2/Monotonicity

    题解:

    首先想到了标算。。然后证明了一发是错的(事实证明很智障)

    先说正确性比较显然的O(n^2)算法

    令f[i][j]表示前i个物品,匹配到第j个括号,最大值是多少

      g[i][j]表示前i个物品,匹配到第j个括号,最小值是多少

    然后这个转移是O(1)的 状态是n^2的

    被状态局限了就没法优化了

    标算:

    令f[i]表示取第i个的情况下最大到达的位置,f[i+1]由f[ 1-----i ]转移

    我们来证明一下这个的正确性

    原命题:每个f[i]一定是由前面某个f[j]转移过来

    逆命题:其中有一个f[i]是由j的某个非最优状态转移而来

    既然f[i]由j的某个非最优状态转移,那么f[j]+1这个符号一定与a[i],a[j]的大小不符

    举个例子 a[i]是3 a[j]是4 大小关系是>><

    现在f[j]=2,即下一位要求a[j]<a[i] 所以a[i]和a[j]不满足要求

    那么一定是由前面一个>转移的(因为满足a[j]>a[i])

    那我们看一下f[j]是怎么来的 前面一定有个k满足a[k]>a[j]

    那么a[k]>a[j]>a[i] 这样 f[i]一定是可以从a[k]转移而来的

    原命题得证

    然后有了这个dp方程显然线段树优化一下就可以了

  • 相关阅读:
    Bitstream or PCM?
    centos7安装Redis-3.2.8
    【生肉】【不义联盟
    ES6中Map数据结构学习笔记
    机器学习基石入门
    2019/5/9 长难句
    文件遍历选取脚本
    [JS奇怪的世界]No.55 危險小叮嚀:陣列與for in
    OpenGL Panorama Player
    吴裕雄--天生自然MySQL学习笔记:MySQL 连接
  • 原文地址:https://www.cnblogs.com/yinwuxiao/p/8973094.html
Copyright © 2011-2022 走看看