D - Left Right Operation Editorial by kyopro_friends


\({\rm cum}[k]=\sum_{i=1}^{k}A[i]\) と累積和を定めます。問題文中の \(y\)\(N-y\) に置き換えることで、求める答えは
\(\displaystyle \min_{0\leq x \leq y \leq N} (Lx+({\rm cum}[y]-{\rm cum}[x])+R(N-y))\)
となります。 この式を変形していきます。

\(\displaystyle \min_{0\leq x \leq y \leq N} (Lx+({\rm cum}[y]-{\rm cum}[x])+R(N-y))\\ =RN+\min_{0\leq x \leq y \leq N} (Lx-{\rm cum}[x]+{\rm cum}[y]-Ry)\\ =RN+\min_{0\leq x \leq N} (Lx-{\rm cum}[x]+\min_{x\leq y \leq N}({\rm cum}[y]-Ry))\)

ここで、\(\min_{x\leq y \leq N}({\rm cum}[y]-Ry)\) の部分は \(y\) についての累積minなので、全ての \(x\) についてを \(O(N)\) で列挙することができます。
したがって、各 \(x\) について \(Lx-{\rm cum}[x]+\min_{x\leq y \leq N}({\rm cum}[y]-Ry)\)\(O(1)\) で求めることができ、そのminは \(O(N)\) で求められます。

今回の問題であれば、元の問題の”意味”に基づいて問題を分割し、公式解説の方針を得る方が多くの人にとって理解しやすいものだと思いますが、この解説のように、機械的に数式を変形することで問題を解くというアプローチも身につけておくと役立つことがあるかもしれません。

posted:
last update: