arc小记
ARC178C
妙妙题
先把 \(B\) 从小到大排序化掉绝对值,假定 \(B_1=0\)。设 \(C\) 为 \(B\) 的差分序列(即 \(\forall i \in [1,n),C_i=B_{i+1}-B_i\)),发现 \(\max(B_i)=B_L=\sum_{i=1}^{L-1}C_i\)。
考虑拆贡献把题目中的式子化成 \(\sum_{i=1}^{L-1}i(L-i)(B_{i+1}-B_i)\),把它看作一个无限背包:共有 \(L-1\) 中物品,每种物品价值为 \(i(L-i)\),价值为 \(1\),求背包大小为 \(A_x\) 的最小价值,直接 \(\tt{DP}\) 就做完了。
因为 \(i(L-i) \leq \max(A_i)\),所以 \(i\) 是 \(\sqrt{\max(A_i)}\) 级别的,即 \(\tt{DP}\) 时间复杂度是 \(O(\max(A_i)\sqrt{\max(A_i)})\)。
ARC176C
遇到没啥头绪的题目不要着急,一步一步来
对限制建图方便思考,考虑按边权从小到大做,分类讨论出一个点必须要填的值或可以填值的上界,最后按上界从小到大照着限制动态维护当前可选几个数乘上去即可。
时间复杂度 \(O(n+m)\)。
ARC156C
情商考验题
手玩一下可以猜到相似值最小是 \(1\),但是要证明!考虑从极长路径入手,也就是两个叶子结点间的路径,设两个叶子结点 \(u\) 和 \(v\),考虑使他们的权值分别为对方,即 \(p_u=v\),\(p_v=u\)。每次确定完两个叶子结点后将他们删掉,不断重复此过程。
\(u\) 要是想出现在 \(\tt{LCS}\) 中,必然包含了 \((u,v)\) 路径上的所有节点,其他节点值没有确定先不做考虑。\(u\) 子树的所有点在路径序列出现的位置在 \(u\) 之前,在权值序列出现的位置在 \(u\) 之后,不可能与 \(u\) 一起作为 \(\tt{LCS}\) 的一部分。
时间复杂度模拟是 \(O(n^2 \log n)\),类拓扑序做是 \(O(n)\),而且十分好写。

浙公网安备 33010602011771号