2つのランドのCodeforces 1166C A物語
[絶対値問題は、列の数を考えると、これを満たす検索\(分{| X + Y |、| X-Y |} \当量分{| X |、| Y |} \) と\(MAX {| X |、 | Y |} \当量最大{ | X + Y |、| X-Y |} \) の数\((X、Y)\ ) 数。
\(X、Yの\)記号は分類の議論が必要で、それは少し複雑なようです。その後の影響を受けません。この問題のシンボルを理解しています。
私たちは考えることができます。2つの正の数の場合は\(X軸、Y軸(X- <Y-)\) 、変更は、シンボルに影響を与えていない場合は、\(| X + Y | \ ) と\(| X-Yは| \)値が、その後、私たちは考えられなかったでしょうシンボル。その後、我々は唯一のことを証明する必要があります\((x、y)は\ ) と( - x、y)は(\ \) 値は、その上に同じ到達します。この場合、一度\((X、Y)\ ) 次に、保持\(( - X、Y) \) と\((X、Y)\ ) 、また、その後、保持\(( - X、Y) \)に設立されました。それはかつて、ある(\)の(x、y \ ) 、その後、保持している((| X |、| \ Y |)\) に設立されました。これはまた、簡単であることを証明しました。ときの対数\((X、Y)\ ) 場合、\(| X + Y | = X + Y \)、\ (| X-Y | = YX \) 。ときの対数\ - ((X、Y) \) 場合、\(| + -X-Y | = YX \)、\ (| -X-Y | = X + Y \) 。それは証明しました。
この数学的な証明は、多くの場合、分類を議論する気にしないでください。以降\((X、Y)\ ) と\((Y、X)\ ) であれば、1つを証明したように、等価です。
初心者コンテスト126 D.でも関係AtCoder
2つのノードが同じ色を必要とする場合【課題】請求項染色(0/1)ツリーの中のノードにパリティツリーは、間隔を隔てもあります。
二つのツリーノード\(U、V \)距離が定義されて\ [* dep_u + dep_v-2 dep_ {LCA(U、V)} \] と場合にのみあれば、距離は偶数であることを確認\(dep_u + dep_v \)でもあります。このIFFの\(dep_u \)と\(dep_v \)同じパリティ。
したがって、我々は、奇数または偶数であるルートの各点までの距離を計算する必要があります。でも、別の色を染めることができ、すべての奇数とすべての染め一つの色。
実際には、我々は、一点からのパリティのルートに単純な実装は、父のパリティとその父親の間の距離に依存しています。点から父がもしそうなら、それは、同じ色、または異なる色や父の父でもあります。
Codeforces 437 C.ザ・チャイルドとおもちゃ
[地図の消去問題/トポロジカル整列上のポイントを削除]無向グラフの少し右に、あなたも、エッジ、このポイントを削除し、削除するポイントを選択するたびに与えます。ポイントの価格を削除するには、そのすべての隣接点と、このタイミングで適切な値です。すべてのポイントの最小総コストを削除してもらいます。
ポイントを削除し、最終的にすべての点が完全に削除されますので、枠消しの本質です。各側の寄与は、両端点でなければなりません。各側はその時点に小さな貢献を選択している理論的な最小値。これは、私たちがそれぞれの側のためのポイントより大きなポイントを削除する権利を持っていることが必要です。これは......トポロジカル・ソートを彷彿とさせます!私たちは、各無向辺が形成することができる、でも大きなポイント右の点のエッジ有向エッジからのポイントを右に少し変更されています\(DAG \)トポロジカル整列を。しかし、ポイントは鳴るかもしれない平等な権利を有していてもよく、内側のリングは重要ではありませんポイントを持って、あなたはtarjanポイントを縮小することができます。幸いなことに、この質問には、出力プログラムを必要としません。私は、出力プログラムを必要とし、質問を考えることができます。
Codeforces 1175 C.電化
【回答】バイナリシーケンスを数直線が与えられます。位置シーク\を(X \) 、そう\(X \)第一のすべての点までの距離\(K \)小さな距離はできるだけ小さいです。
最初の半考えてみましょう\(k個\)小さな距離を。このような問題は、ということである\(O(n)は\)可能性を決定します。その可能性があるに相当する位置である場合(X \)\は、そう\([X-MID、X +中間] \) は、少なくとも含むことができる内\(K \)ポイント。そして、決意の\(MID \)が決定され、問題は、長さに変換される\(2 *ミッド\)は、少なくとも部分カバーするかどうか\(K \)ポイント。キューは、この問題に行うことができます。
Codeforces 1175 D.アレイの分割
[]は切断する、発現配列の最大値を与える\(K-1 \)ブレードになる\(K \)ブロック。最初の\(iは\)ブロックの値\(I * \和\ limits_ {j∈ a_jブロックiは} \) 。最大合計値を求めます。
スロープは、DPを最適化されていません!\ [ANS = maxの\ {k個 *(S_N-S_ {K_1})+(K-1)*(S_ {K_1} -s_ {K_2})+ \ドット+(S_ {K_ {K-1}} - S_ {0})\} \ ] 約アウトになることが見出さ\ [ANS = k個* s_n-の\の和\ limits_ {i = 1} ^ {K-1} S_ {K_Iは} \] したがってプレフィックスとソート解きますそれはすることができます。
Luogu 1875アリソン魔法の薬
【ダイクストラ所与考え\(N- \)物品の価格\(a_iを\) 、次いで得\(m個\)の関係、関係\(X \)を有する物品\(Y \)項目1を合成することができる\(Zの\)項目を。1つの項目の最低価格を与えることを尋ねました。
明らかに\(a_iを\)の値を決定しなければならない最小\(a_iをを\) 、より残りの値ので\(a_iを\)大、確かに優れた合成による。このように、すべての時間は、我々はこのようにそれが更新できないことを保証し、最小値未定の項目を選出します。
我々は、統計的なプログラムの数は、統計が繰り返されることを発見した場合。だから、毎回私たちは他人を更新するだけで求めた2つの値の項目を作ります。
少し形而上学。
Codeforces 1165のE.二つの配列や関数の和
そして最小配列[貪欲戦略二十から二製品、カウント数をカバーするの問題は、2つの長さが与えられる] \(N- \)シーケンス\(A \)と\(B \)の定義\(F(L、 R&LT)= \ SUMの\のlimits_ {L \のLeq I \ R&LTのLeq} a_iを\ CDOT B_i \) 。探している\(\分\ {\ SUM \ {limits_。1 \のLeq L \ R&LTのLeq \} n型のLeq F(L、R&LT)を\} \) 。(\ (N- \のLeq 2 \ ^。5 CDOT 10 \) )
相当する応答要求\(\分\ {\ SUM \ {limits_。1 \のLeq L \ R&LTのLeq \} n型のLeq \ SUM \のlimits_ {L \のLeq I \ R&LTのLeq} a_iを\ CDOT B_i \} \) 。だから私たちは、それぞれの位置のために考慮\(私は\)、\ (a_iを\ CDOT b_i \)あなたの答えで何度も表示されます。いくつかの直接的な統計的困難は、我々はポイントをカバーすることを望むかもしれない\(私は\)順番に考慮さ区間の右端。右点\(Iは\)、左端点を取ることができる\([1、I。] \) 、右端点\(J \) 、左端点を取ることができる\([1、Iは。] \) ......ヘルド左端点をとることができる\([1、I]は\) 、右端点が取ることができる([Iは、N-] \)\。ポイントのカバーすることが可能である\(Iは\)間隔の合計\を(iは(N- CDOTを\ I + 1)\) 番目(結論)
答えは、このように、この形式で表すことができる:\(\分\ {。。\ SUM \ {limits_ 1 \のLeq I \} n型のLeq a_iを\ CDOT B_i \ CDOT IはCDOTを(\ I-N-+ 1)\} \)
以外タイトル条件\(B_iは\)値を与えられているよりも、設定することを望むかもしれない\(= a_iをC_I IはCDOT(I-N-+。1 \ CDOT \)\) 。答えがに変換する\(\分\ {\和 \ limits_ {1 \当量iは当量nを\} C_I \ CDOT b_i \} \)
2×2 2上の配列、貪欲結論の最小和乗算:小から大への2つの配列を、\(B_i \)が一致している必要があり、\(I-N-C_ {+}を1 \。) 。(結論)
任意で\(a_iを、a_j、b_p、 b_q \) を満たす(ソート)\(1 \のLeq IがJ \ N-のLeq \を<)、\ (1 \のLeq P <Q \ N-のLeq \) 。2つのオプションがあります\(= a_iをA \ CDOT b_q a_j + \ CDOT b_p \)、\ (= a_iをB \ CDOT b_p a_j + \ CDOT b_q \)、我々はサイズ違いの方法を比較すると。\(AB = a_iを\ CDOT(b_q-b_p)+ a_j CDOT(b_p \ - b_q)=(a_iを-a_j)\ CDOT(b_q - b_p)\)、明らかに\(a_iを-a_jの\の当量0 、b_q-b_p \ GEQ 0 \) 、そう\(AB \のLeq 0 \) 、そう\(\ BのLeq \) 。だから、両方のケースについて、選択し\(\)確かに、そう貪欲結論は才能の保持しません。
Codeforces 1154 E.二つのチーム
[償却複雑]長さの二重リンクリスト与える\(N-を\)の順序で、および\(P \)横方向に、最大値を見つけるために必要であり、操作\(K \)標識番目、P(\ \ MOD \ 2 \) 。すべて削除する(最大を含む)元素の拡散後。Qは、例の各要素の終わりをマーク。
それは、二重にリンクされたリストを使用して実装されています。これでプロセスは、ポップを継続削除された場合には、維持するための最大ヒープを見つけるために使用することができます。このような複雑さがなければなりません(\)O(N- \ N-ログ)\。何の挿入がないので、あなたがスタックすることはできません、直接の効果は同じ種類です。
この質問は非常に啓発的で、この質問は、需要が世界最小であるので、最小セグメントツリーを追求する必要はありません。この方法は確かに要素を何度もそこにマークされませんので、奇妙な長さは、二重にリンクされたリストにより達成することができ、メンテナンスを必要としません。問題分析のために分析します。
Codeforces 1148 D.ダーティーディーズは安いダートを完了します
[思考、所与の暗黙の条件\(N \)の数に\((a_iを、b_i)\) 。それが適合するように選択された特定の配列対必要\を(A_ {I1} <B_ {I1}> A_ {I2} <B_ {I2}>ドット\ \) または\(A_ {I1}> B_ {I1} <A_ {I2}> B_ {I2} <\ドット\) Qが最大に数から選択され
明らかにそれは2つのグループに分けることができます。さんがお話しましょう\(a_iを<b_iを\)これで。限り各として\(b_i> A_ {I + 1} \) ラインに。満たされた場合\(B_i> B_。1} + {Iが\) 、それは満足しなければならない(1。B_i> A_} + {Iは\)\を。だから我々はわずか数でフォローしたい\(b_i \)を降順すべての数字が選択されているとすることができます。
注意深く分析はいなしで満たすべき条件は何ですか。あなたは、慎重な分析方法を見つけることができます。それでも慎重にそれの性質を持っているトピックを見ています。
Codeforces 276 D.リトルガールと最大XOR
ビット単位] [指定された\(L、R&LT \)を探している、(最大\ {\ oplusの\ \ Bの\}(L \当量A \当量のB \の当量rを))
まず\(L、Rの\は)バイナリを回します。明らかに貪欲な必要性が高レベルから開始します。無視する同一の前に、異なる第1のビットのために、我々は明らかに異なることが分かっまたは最初のものは、異なるされているので、すべてのビットrを小さくすることができ、L各ので1は、次のビットを考慮して達成しますビットを増加させることができます。だから、一人一人は、次に1をCouchuできる答えが出てきました。
Codeforces 577 B.剰余合計
[]モジュロ演算の特性が与えられている\(N- \)番号、サブセットを選択するかどうか、そしてそれが可能な\(m個\)割り切れます。\(N \の当量10 ^ 6 、m個の\当量10 ^ 3 \)
:特殊性を考えてみましょう\(N- \)限り、原則として分類整理することにより得られたとして、接頭番号と剰余を行う\を(N-> Mの\を)し、同じ値の接頭辞がなければなりません。接頭辞の意味は同じで、数はこれとの間にある\(m個\)割り切れる-それが答えです。限り\(N> Mの\)確かに解けます。
このような制限はなり\(N- \のLeq。3 ^ 10 \) 。バックパックをすることができます。あなたがゼロを避けたいので、少し難しいバックパックを転送します。この時、ブラシテーブル方式を使用したいです。前後にシフトする必要があるとして、あなたはローリング一次元配列を行うことはできません。
## Codeforces 552 C.ヴァーニャとスケール
[質問変換、バイナリ検索が2つの数値を与える] \(W \)と\(m個\)(\ (1 \ WのLeq、M \ ^のLeq 10 9 \) )、及び重り101を与える\ (W ^ 0 ^ W. 1、\ cdots、100 W ^ \) (重量各々の一方のみ)。\(m個\)左側には、今では可能なバランスであるかどうかを尋ね、周りにいくつかの重量を置くために。
各重量は、左、右の場所、または保留にすることができます。それぞれについて、すなわち重み係数(\ \ { - 1,0,1 \} \)は、合計かどうか尋ねられることができる\(m個\) 。明らかに\(2 \ =ワット)から、満足しなければならない\(3 \ = W)を考えるようになった、\(\ ^ log_310。9 \約20 \である)、これバイナリ検索。
Codeforces 578 B. "または" ゲーム
及び又は[、]とプレフィックスと所定の配列をすることができるサフィックス(K \)\操作、各々が固定値にシーケンス内の番号を取ることができる\(X \) 。最大数またはすべての操作の後と尋ねます。
最大ビット操作を再度、低高貪欲。1は、ハイレベルになる入れて試してみたかった\(X \)同じ数に乗って。従ってを乗じた数のシーケンスに問題\(X ^ K \) 、または最大およびシーク。あるいは逆の操作が存在していないようです、それは非常に良いメンテナンスではないようです。正しいアプローチはうまく維持またはプレフィックスとサフィックスとすることです。半分に各シーケンスの数を制限するように。