Cdq 解决一类最值和双端点有关的数点问题
COLORFUL BOX
真っ白な想いに
梦のかけらを
描いて
动き出す未来
子供の顷に知った
心が跃るような
わくわくする感情を
今も覚えてるよ
迷いや不安はない
期待に溢れてる
何にだってなれ
そうな気がした
はじまりの静けさと
これからにざわめく鼓动
未知数な物语
そのワンシーンを大切に
めに焼き付けたいから
真っ白な気持ちを
鲜やかに染めていこう
どんな理想も自分
次第で近づくから
不透明な明日に
悩んで踬いたときも
君の声で
乗り越えられるから
叶えたい
胸の中の
沢山の希望のかけらを
描いて
走り出す世界
手のひらに伝わる
きらめくイメージを
少しずつ纺いでいく时间も
大切で大好きな
かけがえのないものになる
未完成な物语
そのワンシーンを忘れない
辉き感じたいから
真っ白な想いを
何色に染めていこう
どんな昨日も自分に
エールをくれるから
流した涙も
元気が足りないときも
君といれば
笑颜になれるから
届けたい
胸の中の
溢れ出した梦のかけれを
描いて
动き出す未来
一人一人が持つ
想いを线で繋いだら
星座みたいに広がる景色
真っ白な光を
どこまでも追い続けて
もっと知りたい
好奇心を感动の先へ
真っ白な気持ちを
鲜やかに染めていこう
どんな理想も
自分次第で近づくから
不透明な明日に
悩んで踬いたときも
君の声で
乗り越えられるから
叶えたい
胸の中の
沢山の希望のかけらを
描いて
走り出す世界
今年最后一篇鲜花。
今年的第一篇鲜花。
被同一个 trick 背刺两次也是没救了。
Yet Another Partiton Problem
首先 \(n^2k\) 的转移是显:
发现 \(\max\) 同时和 \(i, j\) 有关,不好优化。
很牛的 trick 是套一个 cdq,考虑处理 \(j < mid \le i\) 的贡献,容易发现其 \(\max_{k\in(j, i]}\{a_k\}\) 可以拆成 \(\max\{\max_{k\in(j, mid]}\{a_k\}, \max_{k\in(mid, i]}\{a_k\}\}\),而这两段可以分开做,做两个斜率优化即可。
于是我们用一个 \(\log\) 做掉了一个同时和 \(i, j\) 有关的 \(\max\)。
Baby's First Suffix Array Problem
首先建 SA
这里我们默认都是在排好序的数组上,如果是原数组第 \(i\) 个写成 \(sa_i\)
发现因为删除了一个后缀,其相对大小会改变,考虑统计变化量,即原来在 \(k\) 前被 \(k\) 超过的部分和原来在 \(k\) 后超过 \(k\) 的部分。
简单分讨一下 \(sa_i, sa_k, i, k\) 的大小关系,容易发现只有两种有贡献。
分别是:
和
前一种是好做的,发现 \(r - sa_k\) 是定值,\(lcp\) 在 \(i\) 上是连续的一段,所以 $$lcp(sa_i, sa_k) + sa_k > r$$ 相当于是一个限制 \(i > p\),可以二分求出 \(p\),然后直接做二维偏序即可。
后一种没有这么优良的性质,考虑到 \(lcp(sa_i, sa_k) \Leftrightarrow min_{x \in (i, k]}\{ht_x\}\),于是依然套用 \(cdq\),将其拆成 \(\min\{\min_{x\in(i, mid]}\{ht_x\}, \min_{x\in(mid, k]}\{ht_x\}\}\)。
但是你发现你现在对 \(\min\) 两边大小分讨会变成三维偏序,十分不好做,于是我们写出这个式子 \(\min\{\min_{x\in(i, mid]}\{ht_x\}, \min_{x\in(mid, k]}\{ht_x\}\} + sa_i > r\),因为其是 \(>\),我们有个经典拆法,拆成 \(\min_{x\in(i, mid]}\{ht_x\} + sa_i > r \land \min_{x\in(mid, k]}\{ht_x\} + sa_i > r\),也就是说其现在是这三个式子:
发现 \(\min_{x\in(mid, k]}\{ht_x\} + sa_i > r\) 中 \(\min_{x\in(mid, k]}\{ht_x\}\) 对于每个相同的 \(k\) 是定值,所以第三个式子可以写成 \(sa_i > r - b(b = \min_{x\in(mid, k]}\{ht_x\})\) 的形式,这样就和第一个式子合并了,于是依然是二维偏序。
复杂度 \(O(n \log^2 n)\)