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)\),而且十分好写。

posted @ 2024-09-19 00:04  Akane_Moon  阅读(18)  评论(0)    收藏  举报

“一言(ヒトコト)