ABC Ex 记录

听从 tby 教导,做一些 abc_ex 的题。

唉如果我做过我就不加进去了。☆表示我觉得要补代码而不是完全口胡的题。

ABC213H

Tag:多项式,DP。

唉本来不想做多项式题的。不过这个太简单了。

\(dp_{u,t}\) 为走到 \(u\) 用了 \(t\) 的时间。

\(t\) 这一维做分治 NTT 即可。代码不想写。

ABC214H

Tag:费用流原始对偶。

先 SCC 缩点一波,然后变为 DAG。

跑第一遍费用流的时候,可以直接拓扑排序做到 \(O(n+m)\),因为图是一个 DAG(第一次增广)。而增广几次之后图会变得千疮百孔,不好用更快的最短路算法(实际上复杂度的瓶颈在最短路上而非 dinic)。

使用 zkw 费用流(费用流原始对偶),可以做到每次增广都只需要 \(O(m \log m)\) 的复杂度。而限制了 \(f \le 10\),所以 \(O(m f \log m)\) 的复杂度完全可以接受。

值得复习。

ABC215H

Tag:霍尔定理,高维前缀和。

题解

ABC216H

Tag:LGV 引理,动态规划。

题解

ABC217H

Tag:Slope Trick 优化 DP。

直接 Slope Trick 就行,没啥难度。

ABC218H

Tag:wqs 二分,反悔贪心。

唉如果你瞎猜一波这个东西有凸性,其实也就做完了。

为啥有凸性呢?考虑不妨设蓝色的数比较少,那么蓝色显然不会连续。这样就是经典的“有一个长度为 \(n\) 的数组 \(a_i\),选走若干个互补相邻的数,最大化收益”。这个模型显然是凸的。

这个咋反悔贪心呢。一个很弱智的想法是,每次选能选的数中收益最大的。唉但是他有可能被反悔掉。而如果被反悔掉,一定是左右两个都去选。所以可以将其等效为 \(v_{l} + v_r - v\) 这种形态。使用双向链表维护。

ABC221H

Tag:简单计数。

对于这种类似拆分数的题,考虑交换两维坐标,前缀和优化做到 \(O(n^2)\),不就做完了吗。 /xk

具体的,设 \(dp_{i,j}\) 为你钦定最大值为 \(i\),然后和是 \(j\)。有转移:

\[dp_{i,j} = \sum_{i-m \le i' \le i} dp_{i',j-i} \]

ABC223H

Tag:前缀线性基。

字面意思,随便做。

ABC226H

Tag:k-th minmax 容斥,概率期望。

首先转化 \(k\) 大值为

\[\sum_{T \subseteq S} (-1)^{|T|-k} \binom{|T|-1}{k-1} \min(T) \]

\(E(\min(T)) = \int_{0}^{+ \infty} \prod_{u \in T} P(X_u \ge x) \text{d} x\)

\(P(X_u \ge x) = \max\{0,\min\{\frac{R_u-x}{R_u-L_u},1\}\}\),所以可以枚举 \(x\) 所在段,然后设 \(dp_{i,j}\) 为在前 \(i\) 个数中选了 \(j\) 个得到的多项式(最多 \(n\) 次)。

复杂度 \(O(n^4)\),足以通过本题。

ABC231H

Tag:上下界网络流。

题解

ABC232H

Tag:神秘构造题,数学归纳法。

题解

ABC233H

Tag:曼哈顿距离。

显然要把曼哈顿距离转化为切比雪夫距离,使用主席树维护。

ABC235H

Tag:Kruskal 重构树,多叉笛卡尔树,树形 DP。

题解

ABC236H

Tag:图的边容斥,简单奇数,集合幂级数 exp。

题解

ABC237H

Tag:Dilworth 定理,回文串。

题解

ABC238H

Tag:区间 DP,模型转化。

题解

ABC239H

Tag:整除分块优化 DP。

题解

ABC242H

Tag:Min-Max 容斥。

Min-Max 容斥一下,然后再序列上线性 DP。做完了。

ABC243H

Do Do Do work work work

ABC244H

Tag:李超线段树,凸包。

显然可以转化为平面几何问题,关键是你把谁当点、把谁当线。

一种是李超线段树,我觉得更好写。(需要把询问离线下来)

还有一种是维护动态凸包。但是平衡树太他妈难写了,我肯定不会这么做。

使用二进制分组。复杂度不变。

ABC245H

Do Do Do work work work

ABC246H

Tag:子序列自动机,动态 DP。

考虑每个点往他后面第一个 \(0/?\) 以及第一个 \(1/?\) 连边,会得到一个 DAG。

那么本题就是对一个 DAG 进行固定起点的路径计数。这个可以直接 DP(听起来很魔怔,但由于这个 DAG 长的比较特殊所以能这么做)。

ABC247H

Tag:生成函数,斯特林数,排列的性质。

题解

ABC248H

Tag:序列分治,线段树。

首先有一个 \(O(nk \log n)\) 的做法:扫描 \(r\),对 \(l\) 动态维护 \(\max_{l \le i \le r} a_i - \min_{l \le i \le r} a_i - r-l+1\)。使用线段树维护区间中多少个数等于最小值、最小值 \(+1\)、最小值 \(+2\)

但是可以序列分治。说出这个词之后就不太需要解释了,cdq 一下就行。

特别的,对于这种“符合要求的子区间数”的问题,可以考虑 cdq 分治+二维数点(或者其他什么神奇技巧)

ABC249H

Do Do Do work work work

posted @ 2025-05-03 19:21  M2GA  阅读(21)  评论(0)    收藏  举报