随笔分类 - 比赛题解 / OIFHA
摘要:吐槽 虽然难,但全部都是比较好玩的题目(除了 \(T_1\))。 T1 幸好没做这题(doge)。 其核心思想在于看到有向图以及每条边可以走很多次且只算一次需要很快想到 tarjan,为什么要很快?因为你还要调代码。 然后这是一个 DAG,跑一个原图的拓扑和一个反图的拓扑就行了,排完序后,最后计算答
阅读全文
摘要:我们括号匹配的经典做法就是把左括号看作 $+1$,右括号看作 $-1$,那么任意一个位置上的前缀和必须 $\geq0$,且最后一个位置的前缀和必须为 $0$。
这个可以引申出来一个定理:
> 对于第 $i$ 个左括号一定满足其位置 $pos\leq 2i-1$。
显然的,因为如果不满足就说明前面的右括号多了,也就是上一个前缀和出现了负数。
那么我们就转化为了处理左括号与这个的偏序关系,又因为字典序天然的贪心,所以说我们从前往后枚举能不能填左括号,如果能填就尽量填。
那怎么判断呢?我们只需要判断这个位置能不能找到偏序关系即可,而且与它数字相同的那一组也要满足。
这个思路很巧妙,位置用 `set` 维护就行了。
阅读全文
摘要:感觉很典,所以就记下来了。
我们考虑一个非常重要的事实:
- 田忌赛马对于每一个 $a_i$ 找的是第一个比他大的 $b_i$。
- 而字典序最大又需要前面的尽可能大。
这似乎产生了矛盾,让这道题目看起来有点难。
我们考虑不用 `multiset` 或者双指针求这个值,我们考虑分治的过程。
CDQ 分治是这样的:
>对于左区间算好其分内的答案,右区间算好其分内的答案。
>
>要合并区间的时候,左区间和右区间匹配就行了。
那么我们只需要记录每个区间剩下多少个 $a$ 中的元素和 $b$ 中的元素还没有匹配即可。
最精华的部分来了:由于我们对于每一个 $a_i$ 肯定进行二分答案是否可行,因为字典序本质上就有一个贪心的过程。我们考虑把这个思想搬到一个可支持修改的线段树上面即可。
在线段树上面这个是好维护的,于是这道题就做完了。
阅读全文
摘要:## 概述
给你一个长度为 $n$ 的排列 $p$,定义集合:
$$
S_i=\{x\mid x\geq i\wedge \max_{k\in[i,x-1]}p_k
阅读全文

浙公网安备 33010602011771号