【湖南集训 4.7】sanrd

题目描述

你要猜一个 0 n之间的数,每次你可以问这个数比 i+0.5 大还是小,代价是 ai
问最坏情况下你至少需要多少的代价问出答案。

n5×105,0<ai9


分析

lans,i 表示在 i 位置用ans可以拓展到最左, r 最右。
考虑找到一个j,满足 ransqi,j>=i1 ,用它的 l 去更新li

不妨记一个 upDri ,表示 rj>=i 的最小的 lj
那么直接更新就好了。
但是这里还有一个问题,就是有可能一些比 i 大的j去更新了 i
但是画图分析一下,假如真的是这样的话,i肯定是在 j 的左子树中,将i旋到左子树的根,得到的新树也可以用来更新 i 。于是这样子就证明了j大于 i 的不会更新到i
剩下的随便搞搞就好啦。

时间复杂度 O(nans)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值