摘要:
我们括号匹配的经典做法就是把左括号看作 $+1$,右括号看作 $-1$,那么任意一个位置上的前缀和必须 $\geq0$,且最后一个位置的前缀和必须为 $0$。
这个可以引申出来一个定理:
> 对于第 $i$ 个左括号一定满足其位置 $pos\leq 2i-1$。
显然的,因为如果不满足就说明前面的右括号多了,也就是上一个前缀和出现了负数。
那么我们就转化为了处理左括号与这个的偏序关系,又因为字典序天然的贪心,所以说我们从前往后枚举能不能填左括号,如果能填就尽量填。
那怎么判断呢?我们只需要判断这个位置能不能找到偏序关系即可,而且与它数字相同的那一组也要满足。
这个思路很巧妙,位置用 `set` 维护就行了。 阅读全文
posted @ 2025-10-10 09:37
high_skyy
阅读(6)
评论(0)
推荐(0)
摘要:
感觉很典,所以就记下来了。
我们考虑一个非常重要的事实:
- 田忌赛马对于每一个 $a_i$ 找的是第一个比他大的 $b_i$。
- 而字典序最大又需要前面的尽可能大。
这似乎产生了矛盾,让这道题目看起来有点难。
我们考虑不用 `multiset` 或者双指针求这个值,我们考虑分治的过程。
CDQ 分治是这样的:
>对于左区间算好其分内的答案,右区间算好其分内的答案。
>
>要合并区间的时候,左区间和右区间匹配就行了。
那么我们只需要记录每个区间剩下多少个 $a$ 中的元素和 $b$ 中的元素还没有匹配即可。
最精华的部分来了:由于我们对于每一个 $a_i$ 肯定进行二分答案是否可行,因为字典序本质上就有一个贪心的过程。我们考虑把这个思想搬到一个可支持修改的线段树上面即可。
在线段树上面这个是好维护的,于是这道题就做完了。 阅读全文
posted @ 2025-10-10 08:27
high_skyy
阅读(9)
评论(0)
推荐(0)

浙公网安备 33010602011771号