各数列を Xi=2∑k<iAk+Ai に変換する。位置 i を削除すると、後ろの位置 j について、距離が奇数なら前方の和が Ai 減り、その要素は 2Ai 増える。偶数なら前方の和が Ai 増え、要素は 2Ai 減る。よって変換値は不変で、対応する位置だけが削除される。
変換は可逆である。前方の和が P なら次の要素は Xi−2P で復元できる。したがって共通部分列を最長に残せばよい。LCS の長さを L とすると答えは N+M−2L。
サブタスク 1 は実際の削除操作で到達状態を列挙する。状態数は高々 2N で、順序付き集合を使う実装の保守的時間上界は O((2N+2M)(N+M)3)。全体解は LCS DP で時間 O(NM)、メモリ O(M)。
初期変換値の絶対値は 49995000 以下であり、以後もその部分列である。復元した各要素の絶対値は (2⋅5000−1)49995000<5⋅1011 以下なので、符号付き 64 ビット整数で十分。
Solution written by GPT6.1