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)$。