zoukankan      html  css  js  c++  java
  • [NOI2009]二叉查找树

    题解:

    顺便学了一下笛卡尔树

    首先显然这题给出的是一颗treap

    那么有一个性质就是在它改变权值的时候,它的中序遍历不会随之改变

    那么就变成序列上的问题了

    令f[i][j][k]表示i-j这段区间最小值为k(当然首先得离散化)

    转移就是枚举mid,然后枚举他们的最小值k1,k2

    这样时间是n^3*n*n^2=n^6的

    那显然这个太暴力了

    我们在初始时处理处g[i][j][k]表示i-j这段区间最小值大于等于k的最小值

    那么枚举完mid之后就可以o(1)了

    这样是n^4的,常数挺小的吧

    另外就是感觉离散化这里有点奇怪

    题意应该是支持把权值变成实数的吧,不然这样其实是不对的

  • 相关阅读:
    扫雷游戏
    打地鼠Demo
    Game2048
    蛇形矩阵
    约瑟夫环
    二分法查找
    动态规划之防卫导弹
    动态规划之0-1背包问题
    回溯算法之火力网
    回溯算法之8皇后问题
  • 原文地址:https://www.cnblogs.com/yinwuxiao/p/8697083.html
Copyright © 2011-2022 走看看