一般違い

序文

操作の範囲で多くの話題について、差が一般的で便利なスキルで、これがあることを照合し、分析

例1

luogu 3943

問題の意味

長所与\(N- \)番号1であるアレイ01の\(K \)を

あなたがされてもよい(Mの\)\の動作モードを、\(私は\)動作の長さモードがある\(L_iを\)は、長さを表し\(L_iを\)間隔又は排他的です。

全体の配列がゼロになる作り、どのように多くの操作最小を必要として下さい。

\(1 \当量のK \当量8 1 \当量のn \の当量4 \ times10 ^ 4、1 \当量のm個の\当量64 \)

問題の解決策

直接ので、全区間または別のをやってんではないが、各セクションが互いに複雑な効果と交差する、方法はありませんでした。

変換の問題を考えてみて、間隔または異なるセクションまたは異なるエンドポイントに変換俗として知られている差動思考、問題を緩和します。

具体的には、排他的OR処理の結合特性。我々は、元の配列の差異配列(即ち得ると仮定[I - 1] \(D [I]は[I] XOR Aが= \));元の配列の我々セクション\([L、R] \ ) のために排他的論理和と等価であってもよい\(D [L] = D [L] XOR。1、D [R&LT + 1] = D [R&LT + 1] XOR 1 \) 目標結果\([1 \ RIGHTARROWのn]は 、A = 0 \)と同等であってもよいDの(\ [1 \ RIGHTARROW N- + 1] = 0 \)

したがって、問題は、形質転換された:これ以上の配列における01より(1当量16 \ \ 2K)\数1。各動作は、前記二つの位置に選択することができる(X、Y \)\ので、(D [X] = D [X] XOR。1、D [Y] = D [Y] XOR 1 \)\、それを提供\ (Lの\でX- \をy--) ように、操作の最小数を尋ねる\は(D [i]が\)全て0です。

小1の数、及び考えることが困難成形圧力のDPフレーム、提供\([S] fは\)を示し\(S \)のセットが全てになったときの動作の最小数は、最初の転送0であります1つのマッチング列挙、対応する転送を言っている最初のものを見つけること。複雑\(O(S \タイムズ2K)\)

2 1にすべての問題を計算する方法の両方を0最小コストになります。

一つは、非常によく設立アプローチを探します。試みることができる\ - (L用のYのX \ \) の移行を、もし\(Y - X = L_1 + L_2は\) また、排他的又は2つの位置不変に基づいてキャンセルをすることができ、間隔を達成することが可能ですステッチ;というようにダウンし、私たちがすることができます\(Lの\)コレクションは、アイテムの数を見て、そこに(L_iを\)\と$ -l_i \(2つの値を、解決いっぱい\)項目のy--最小数は$をxは。しかし、いくつかの重大な問題(おかげであるエプワース)、我々は、上限の値を決定することができないように、別々に処理されるようにしている正の値と負の値項目の完全なバックパックを行うときに、また、でも十分な上限の値開いている場合グレートは、我々が実際に引き渡さので、左端点が1以上である、右端がN + 1より大きくない、この点の相対位置に基づく方式が考慮されていない、絶対的な位置を調整することができない、間違っています。したがって、間違いました。

次の2つの11秒ルール、1の最小コストとの間で使用できる場合は、そうでない場合、この2 1をなくす関節ルールの数を必要とします。ルールは、0と1に適用した場合、具体的に、1スプレッドに0の位置に対応し、問題が他に一致するいずれかの新しい位置に変換されます。この問題は、推移見つけることができる、それができるプロセスをパターニングします具体的には、我々は、接続されたエッジの位置に一致させることができる既存のルールによれば、様々な位置から進行、2つの位置の間の最小コストは、すべての右側ので、グラフ上の2つの位置の経路長であります1、BFS利用可能な処理時間計算\(O(2knm)\)

コードを見ます

関連演習

luogu 4552

問題の意味

長さを考えると\(N- \)セクション全体がインクリメントまたは1デクリメントするようなシーケンス、ゾーンあなたが任意の長さを選択することができますたびに、。

範囲全体がすべて同じであるように、操作の最小数を尋ねます。そして、の前提の下で動作の最小数を尋ね、最終的には、系列の種類の数を数えます。

\(1 \当量のn \の当量10 ^ 5 \)

問題の解決策

第一オリジナル配列の差アレイ取得\( -差分を[I] = A [I] - \ [I 1。]) ;間隔を変換するために添加することができる\(差分[L] ++、差分[R + 1] - - \) 保存間隔に変換することができる\(差分[L] - [R&LT + 1]、差分を++ \) 場合(R = N \)\、のみ\(差分[リットル] - \ ) 有効です。

究極の目的は、\(差分[を1] = [を1]、\ FORALL I \ [2、N-]、差分における[I] = 0 \) 操作の最小数を見つけます。

各操作の影響を考慮してください\(L 1 = \。)を感知しない。\(1- \のNEQ 1及びR NEQ N \ \。)を場合2に変更することができる\(差分\)を、\ (1- \ lとNEQ 1。 = N \)に変更することができる\(差分\)を

場合、個々の要素は、独立している\(差分\)の動作がゼロになったときに必要ではありません。したがって、優先酒双方向動作、すなわち、正および負の動作;のみ正または負のみ最終の、\(1- \のNEQ 1及びL = N \)処理しました、操作の最小数を知っています。式缶\(O(N)\)の要件、すなわち、差分の$ [2 \ RIGHTARROW N-] \(正和\で)アップ\(負\の和) $ダウの絶対値の最大値。

変更を考えてみましょう(差分[1] \)\場合、\(デフ[1] \)ごとに1を、$ diffのに作る[2 \ RIGHTARROWのn]の操作\(マイナス1、変わらない操作の合計数の数。具体的には、\)と仮定される場合、リム= ABS(+アップダウ)$ \は(差分[1] \)変化量はより小さい\(LIM \)そうでなければ、操作の特定の数が多く総なり、同じ操作のその後総数。

プログラムの数の最適解\(LIM + 1 \) 時間複雑\(O(N)\) コードを見ます

おすすめ

転載: www.cnblogs.com/littlewyy/p/11725140.html