0804 模拟赛

T1

虽然我不会,但我猜个结论,有没有一种可能,一条边最多被走三次啊。

好像有一定道理,但我也不知道为什么有道理,如果这样的话我是不是可以,\(dp_{i,j}\) 表示 \(i\) 的父边引出了 \(j\) 条路径,且子树内全部满足的最小步数这样子。我猜测这个 \(j\) 即使不是 \(3\),应该也是 \(O(1)\) 数量级。

T2

这不弱智嘛!

一眼分治,枚举一个 \(a_l\) 作为端点并钦定它是最小值,那么右边可选的 \(a\) 是一个前缀。直接进行一个类的分:

  • \(a,b\) 较小值在同一侧

那么要找的就是,下标 \(x\) 有上限,\(b_x\) 有下限,并且 \(x\) 离分治重心最远的一个,直接线段树完事了。

  • \(b\) 较小值在另一侧

要找的就是,下标 \(x\) 有上限,\(b_x\) 有上限,且 \(a_l\cdot b_x\cdot (x+l)\) 最小的一个,也就是 \(b_x\cdot l+b_x\cdot x\) 最小的一个。

这显然是关于 \(l\) 的一次函数,并且我们每次查询的 \(l\) 是单调的,说明决策关于关于斜率是单调的,而斜率 \(b_x\) 也是单调的,直接预处理出凸包就完事了。再考虑进 \(b_x\) 的上限,外面套个线段树完事了。

时间复杂度 \(O(n \log^2 n)\)

T3

这个,第 \(i\) 层的节点 \(x\) 的父亲就是,\(x-i+[x-i< a_i]\),我猜测是要搞什么倍增之类的事情,但我不懂咋倍增啊这个。

赛后才知道,原来 LCA 只可能是分叉点,那么提起来建个虚树,每次查询单链链顶就完了!小丑!小丑啊!

posted @ 2022-08-04 10:29  Ilith  阅读(87)  评论(5编辑  收藏  举报