10.7闲话
摆摆摆,我是姬虫摆摆世。
数据结构课终于能听懂了,但是没时间写题了,怎么会是呢😕😕😕
晚上打牛客。应该是切了 ABC 仨题,D 打暴力不知道多少分。感觉基准分都他妈的 200+ 了😅😅😅。
欸今天好像能写的事好少啊,估计是今天太忙了吧,晚上也懒得打 abc 了,明天看看能不能打 arc 吧(双关😕)
闲话不闲了,所以没多少可以写的了,哎。希望没退役的时光再多一点吧,不想回班上 whk,想在机房一直待到死。
哦哦哦今天参加 arc5.0 曲目投票了,我草我他妈真爱必须投 Lost Emotion 啊我草,这么好听的歌🥵🥵🥵。
推歌:Apollo -TJ.hangneil
虽然真爱投了 Lost Emotion 但是之前推歌推过了。
喜报:两天推了两首飒飒酷热,一首天津红牛,怎么会是呢😕😕😕
(昨天第二首歌在下面的图里)
CF1264D
我们可以先枚举最终括号匹配的中间点,然后枚举左右的括号数来计算权值,但是我们可以发现:一个括号序列最终匹配的中间点可能不只有一个,因此我们需要一个规则来防止算重。
我们先确定一个括号序列,然后设 \(a_i\) 为 \([1, i]\) 这段区间内 (
的个数,\(b_i\) 为 \([i+1, n]\) 这段区间内的 )
的个数,那么显然,这个括号序列的权值为 \(\max_{i=1}^n (\min(a_i, b_i))\)。我们考虑找到这个决策点。
我们可以发现,当我们让 \(i\) 向右扫时,如果扫到了 (
,那么会让 \(a_i\) 加一;扫到 )
会让 \(b_i\) 减一。因此我们可以得到:\(a_i\) 单调递增,\(b_i\) 单调递减。我们把 \(a\) 和 \(b\) 的图像画出来可能就是下面的样子:
而我们要求的答案即为下图中的绿色部分。
我们可以发现,\(a_i=b_i\) 为其最优决策点,且该序列的权值为当前的 \(a_i\)。
回归到最上面的问题,我们的目的是解决计算重复。显然对于一个括号序列,满足 \(a_i=b_i\) 的位置有且仅有一个,那么我们可以直接在 \(a_i=b_i\) 的时候来计算答案。
我们还是枚举中间点 \(p\),设左边的 (
有 \(x\) 个,?
有 \(a\) 个,右边的 )
有 \(y\) 个,?
有 \(b\) 个。并且我们让左右两边的左右括号数量相等,那么我们可以列出下面的式子:
我们用这个式子可以 \(O(n^2)\) 出答案,我们考虑把这个式子再推推:
考虑经典结论 \(m\dbinom{n}{m}=n\dbinom{n-1}{m-1}\) 以及范德蒙德卷积,我们可以得到最终的式子:
时间复杂度 \(O(n)\)。