Gravatar
RpUtl
积分:1819
提交:195 / 364

A

注意到在矩形内的线段也是一条线段。求出线段的两个端点。

特判掉无解,求线段和矩形四条边的两个交点(注意端点在矩形内部)

时间复杂度为 $O(1)$。

B

DAG 上支配树。考虑能支配点 $x$ 的点集和点 $x$ 在支配树上的祖先集合等价。

具体的,插入第 $i$ 个点前,得到 $1\sim i-1$ 个点的支配树。

如果这个点受点集 $S$ 支配,则找到深度最大的点支配点集 $S$,体现在支配树上就是公共 LCA。

找到这个点后插入,因为要动态加叶子求 LCA,所以需要倍增。

按照拓扑排序加入叶子,查询时处理公共最近祖先。时间复杂度为 $O((n+m+q)\log n)$。

C

可以先按照大小排序。

然后求差分数组的 $\gcd$,正确性显然。

时间复杂度为 $O(n\log n)$。

D

$u_i=a_i-\min(a_i,b_i),v_i=b_i-\min(a_i,b_i)$。

注意到 $u_i,v_i$ 至少一个为 $0$。然后对有值的 $v_i$ 的取前 $k$ 大。

感觉不是很对,可以全取 $b_i$,然后取 $b_i-c_i$ 最小的几个。

时间复杂度为 $O(n\log n)$。

E

求出图的任意生成树,$(x,y)$ 的路径为从 $x\to y$ 的树上路径异或权值异或上任意一个环的异或权值。

实际上只需要把经过 $1$ 的环塞进去线性基就能表示所有环,时间复杂度为 $O(n\log V)$。

F

省流 $n^2m^2\le q$。

直接预处理出任意位置的答案,时间复杂度为 $O(n^2m^2+q)$。

G

$\min(a_i,b_i,c_i)$。

H

强强。

显然只需要满足任意 $i+1$ 大小的集合大于任意 $i$ 大小的集合。

显然只需要满足任意前 $i+1$ 大小的集合大于后 $i$ 大小的集合。

感觉一下,$i$ 越大越难满足,只需要让 $i=\left\lfloor\frac{n}{2}\right\rfloor$ 即可。

如何刻画单调递增,只需要令所有 $A_i=m$,每次减去一个前缀。记 $c_i$ 为 $1\sim i$ 减了 $c_i$ 次。

然后不会了,爽贺题解。

记 $d$ 表示前 $k+1$ 个减去后 $k$ 个的值,只需要满足条件 $d>0$。

可以求出 $c_i\gets c_i+1$ 会导致答案的变化 $w_i$。

要使得设 $dp_{i,j}$ 表示让 $c_k$ 变了 $i$ 次,$d=j$ 的方案数。

直接 $O(nm)$ 背包 dp 即可。

I

初见杀。

注意到前缀和和 $a_i$ 是双射,对前缀和处理。

已知 $s_0=0$,已知花费 $w_{l,r}$ 的代价可以知道 $s_{l-1},s_r$ 之间关系。

转化为最小生成树模型,Prim 可以 $O(n^2)$。

J

怎么感觉可以手算预处理出来当前面经过某种操作后是那个面(。

然后自动机(,时间复杂度为 $O(q)$。

K

差分,随便做。

L

显然分数规划。

每次一定减去 $[2,n-1]$ 中的最大子段和。

时间复杂度为 $O(n\log V)$。