最終的なYandex.Algorithm 2016のタスクの結果ず分析

7月29日に、ミンスクはYandex.Algorithmプログラミングチャンピオンシップの最終ラりンドを開催したした。 受賞者は、モスクワ州立倧孊を卒業し、元ダンデックスの埓業員だったEgor EgorK Kulikovでした 。 2䜍-チュヌリッヒのスむス高等技術孊校のニコラゞョッキ 。 孊校のチヌムの䞀員ずしお、圌はACM ICPCのファむナリストでした。 3䜍は、東京倧孊を卒業した副島真琎氏です。 前の2぀のアルゎリズムの勝者であるGennady Korotkevichが6䜍になりたした。







過去数幎ず同様に、最終タスクの詳现な分析を公開しおいたす。 7月31日、最初にアルゎリズムのミラヌを開催したした。 したがっお、参加者の喜びを損なわないために、圌らは通垞のように決勝の盎埌に回答を公開したせんでした。







画像







今幎、1幎前よりも4分の1倚いアルゎリズムの参加申請を受け取りたした-4578。これたでのずころ、参加者の䞭には数人の少女がいたす-372。登録された人のリストには70か囜の代衚が含たれおいたす。 最も競争が激しい-ロシア、むンド、りクラむナ、ベラルヌシ、カザフスタン、アメリカ、䞭囜から。 25人がファむナルに参加したした。







Yandex.Algorithmのタスクは、Yandexの埓業員ず招埅された専門家であり、その䞭にはACM ICPCのファむナリストず受賞者がいたす。 競技条件に応じお、参加者は異なるプログラミング蚀語を䜿甚できたす。 Yandex.Algorithmの統蚈では、最も䞀般的な蚀語はC ++です。 2,000人以䞊が遞択したした。 2䜍はPythonずJavaで共有されたした。







タスクA.最終䌚堎



問題の著者 アレクセむ・トルスティコフ、ロヌマ・りドビチェンコ







入力ファむル名 出力ファむル名 制限時間 メモリ制限
暙準入力 暙準出力 3秒 512メガバむト


今幎、Yandex.Algorithm決勝がベラルヌシ囜立図曞通で開催されおいたす。 図曞通の建物は非垞に珍しい圢である菱面䜓八面䜓であるこずに泚意しおください。







菱面䜓八面䜓は、面が18の正方圢ず8぀の䞉角圢の半正倚面䜓です。 合蚈で、菱面䜓八面䜓には24個の頂点ず48個の゚ッゞがありたす。 菱面䜓八面䜓の画像を以䞋に瀺したす。









このタスクでは、共通の゚ッゞを持぀2぀の面が同じ色でペむントされないように、菱面䜓八面䜓の面に色を付ける方法の数を決定する必芁がありたす。 合蚈で、あなたが自由に䜿えるk色がありたす。







答えは非垞に倧きくなる可胜性があるため、10 9 + 7を法ずしお蚈算したす。







入力圢匏



入力の唯䞀の行には、自由に䜿甚できる色の数である単䞀の敎数k1â©œkâ©œ50が含たれたす。







出力圢匏



1行で問題の答えを印刷したす。







䟋



暙準入力 暙準出力
1 0
3 356928


発蚀



k = 3の正しい色付けオプションの1぀は、すべおの䞉角圢の面を最初の色8面、䞉角圢の面の1぀の゚ッゞに隣接するすべおの正方圢の面、2番目の色12面、および3番目の残りのすべおの正方圢の面に色を付けるこずです色6面。







タスクAの解析



頂点が菱面䜓八面䜓の面であり、蟺が偎面に隣接する面に察応する頂点を接続する新しいグラフを考えたす倚面䜓のいわゆる二重グラフ。 タスクの圢匏は次のずおりです。結果のグラフの正しいカラヌリングの数をk色で蚈算する必芁がありたす。正しいカラヌリングは、隣接する頂点が異なる色でペむントされるようなカラヌリングです。







グラフは2郚構成であるこずに泚意しおください。その頂点は、12の頂点ず14の頂点で構成される2぀のグルヌプに分割できるため、゚ッゞは異なるグルヌプの頂点のみを接続したす。 実際、条件は、このパヌティションがどのように構成されおいるかを瀺しおいたすパヌティションの最初の郚分は、説明では2番目の色でペむントされるこずが提案されおいる頂点によっお圢成され、残りのすべおは残りの郚分です。







最初に最初のビヌトをペむントし、次に2番目のビヌトをペむントしたす。 最初のロヌブの固定色付けでは、2番目のロヌブを着色できる方法の数を蚈算するのは難しくありたせん。2番目のランプの各頂点を個別にペむントしたす。぀たり、メ゜ッドの総数はk-adjの2番目のロヌブv v、ここでadjvはvに隣接する頂点間の異なる色の数です。







次に、最初のビヌトのカラヌリングを䜕らかの方法で敎理する必芁がありたす。 各頂点の色を明瀺的に䞊べ替える堎合、玄50 12≈2.4・10 20の操䜜が必芁になり、合理的な時間枠には収たりたせん。 頂点自䜓の色を反埩するのではなく、同じ/異なる色グルヌプぞの分割のみを繰り返したす。 ぀たり、列挙の過皋で、次の各頂点に察しお、頂点の既存の色の1぀に割り圓おるか、新しい頂点を䜜成するかを決定したす。 そのような「圧瞮」カラヌリングはそれほど倚くなく、4,213,597個しかありたせん。 明らかに、最初のビヌトの圧瞮カラヌリングに含たれる情報は、2番目のビヌトのカラヌリングの方法を理解するのに十分です。この圧瞮カラヌリングを本栌的なカラヌリングに倉換する方法の数をこの数倀に掛けるこずを忘れないでくださいAk​​、c = kk-1k-2...k-c + 1、cは圧瞮カラヌリングで䜿甚される色の数です。







曞面による解決策が制限時間に収たらないが、1぀のテストであたり長く動䜜しない堎合、kの制限がそれほど倧きくないずいう事実をごたかしお掻甚し、ロヌカルコンピュヌタヌでのテストに察する50の回答すべおをカりントし、それを単にプログラムに入れるこずができたす。







別の解決策は、䞭間の8぀の正方圢の垯の色付けを繰り返しおから、菱圢立方八面䜓の䞊半分ず䞋半分が互いに独立しお色付けされるため、半分の1぀を色付けしお正方圢にする方法の数を数えたす。










タスクB.シヌケンスの倉換



問題の著者 マキシム・アフメドフ、グレブ・゚ノストロポフ







入力ファむル名 出力ファむル名 制限時間 メモリ制限
暙準入力 暙準出力 1秒 512メガバむト


元はn個のれロで構成されるシヌケンスa 1 、a 2 、...、a nが䞎えられたす。 䞀床に、サブセグメントa l 、a l + 1 、...、a r 、および任意の敎数xを遞択し、 l + kをl + k +-1  k・xすべおの敎数0â©œkâ©œr-l。







最小の移動数で、元のれロシヌケンスを特定のシヌケンスb 1 、b 2 、...、b nに倉換する必芁がありたす。 シヌケンスb iには重芁な制限がありたす。そのすべおの芁玠が集合{-1、0、1}に属するこずが保蚌されおいたす。







入力圢匏



入力の最初の行には、単䞀の敎数n1â©œnâ©œ10 5 が含たれたす。 2行目には、n個の敎数b 1 、b 2 、...、b n -1â©œb iâ©œ1が含たれたす。







出力圢匏



元のシヌケンスを必芁なシヌケンスに倉換するために必芁な移動の最小数を印刷したす。







䟋



暙準入力 暙準出力
2

-1 1
1
5

1 -1 1 1 0
2


発蚀



最初のテストでは、条件から必芁なシヌケンスを1回の動きで取埗できたす。x= -1、l = 1、r = 2です。







条件からの2番目のテストでは、次の手順を実行できたす。

0 0 0 0 0→2 -2 2 0 0→1 -1 1 1 0







解析問題B



デザむンを埐々に理解しおいきたす。 たず、偶数の䜍眮にあるすべおの数倀の笊号を反転させたす。 これで、条件に瀺された操䜜がより簡単になりたす。任意のサブセグメントを遞択しお、その䞊のすべおの数字に同じ数字tを远加できたす。







「サブセグメントに同じ数を远加する」ずいう圢匏の操䜜を扱っおいるため、隣接する芁玠の違いからなるシヌケンスに移動するず䟿利です。a1、a 2 、...、a nからシヌケンスb 0 = aに枡したす。 1 、b 1 = a 2 -a 1 、...、b i = a i + 1 -a i 、...、b n = −a n 。 このシヌケンスにはもう1぀の芁玠があり、b 0 + b 1 + ... + b n = 0ずいう特別な条件を満たす。







次に、元のシヌケンスのセグメント[l、r]に定数xを远加するず、眮換b l − 1 →b l − 1 + xおよびb r →b r -xず同等になりたす。







シヌケンスa iには-1から1たでの敎数が含たれおいるため、シヌケンスb iには-2から2たでの敎数が含たれおいたす。 x、およびシヌケンスにれロのみが含たれるようにする必芁がありたす。







xず-xをシヌケンスの2぀の芁玠に远加する操䜜の「重み」を量| x |ず呌びたす。







補助的な事実を蚌明したしょう数b iがれロより倧きい小さい堎合、数b iが増加する挔算を䜿甚するこずは有益ではありたせん。 正匏に蚀えば、ある瞬間にいく぀かのb iが増加する最適な぀たり、最短の操䜜のシヌケンスがある堎合、1぀のb iが決しお増加しない操䜜のシヌケンスを提瀺できたす。同じ長さ。







実際、2぀の操䜜をb iに適甚したす。たずえば、1b i →b i + x、b j →b j -xおよび2b i + x→b i + x-y、b k →b k + y、および明確性の堎合、x、y> 0、および明確性の堎合、xâ©œy。







これら2぀の操䜜を他の2぀の操䜜に眮き換えたしょう1b i →b i- y-x= b i + x-y、b k →b k + y-x and b j →b j -x、b k + y-x→b k + y-x + x = b k + y これらは2぀の同等の操䜜であり、同じ結果に぀ながりたすが、2぀の新しい操䜜の合蚈重みが枛少しおいるこずがわかりたす。| y-x | + | x | = y-x + x = y <x + y = | x | + | y |。







このような眮換を繰り返すこずは可胜ですが、遅かれ早かれ停止したす垞に敎数で非負であるため、挔算の総重量は無限に枛少できないため。぀たり、正の芁玠が垞に存圚する同じ長さの挔算のシヌケンスを芋぀けるこずができたす枛少したす。 同様に、肯定的な芁玠が増加するだけであるこずを確認できたす。







これにより、利甚可胜なすべおの操䜜を説明できたす。 1回の動きで-2ず2を取り陀くか、1回の動きで-1ず1を取り陀くか、2回の動きで-2、1、1を取り陀くか、2回の動きで2、-1、-1を取り陀くこずができたす。







実行するすべおの挔算の合蚈重みは、b i内のすべおの正の数の合蚈であるこずは明らかですこれは、すべおの負の数の合蚈ず笊号が反察です。 珟圚、重み1ず重み2の操䜜があり、操䜜の合蚈数を最小限に抑えるために、可胜な限り倚くの重み2の操䜜を実行する必芁があるこずは明らかです。それができなくなったら、1぀を枛らし、䜕が起こるかをマむナスしたす。







したがっお、答えはすべおの正のb iからデュヌス数の最小倀ずデュヌス数を匕いたものの合蚈です。










問題C.ハットゲヌム



問題の著者 グレブ・゚ノストロポフ







入力ファむル名 出力ファむル名 制限時間 メモリ制限
暙準入力 暙準出力 1秒 512メガバむト


垜子はロシア語圏の囜で人気のあるゲヌムで、芪しみやすい倧䌁業向けに蚭蚈されおいたす。 参加者は2぀のチヌムに分けられ、茪になっお座り、党員がパヌトナヌの真向かいに座りたす。 プレむダヌは小さな玙にたくさんの蚀葉を曞き、垜子に入れたす。その埌、各プレむダヌは順番に、自分の名前を明瀺せずに圌に萜ちた蚀葉をパヌトナヌに説明しようずしたす。







次の問題を考慮しおください。 円卓には2n人がいたす。 圌らは垜子をかけたいず思っおおり、すでに䜕らかの圢で2぀のチヌムに分かれおいたす。 今、圌らはそれぞれの人が圌のパヌトナヌの反察偎に座っおいるような方法で転送したい。 これを行うには、次の操䜜を数回実行できたす。テヌブルに座っおいる人から2人を遞択し、堎所を切り替えるように䟝頌したす。







テヌブルの人々の初期䜍眮が䞎えられたす。 説明されおいるタむプの操䜜の最小数を決定し、各人がパヌトナヌの反察偎に座るようにしたす。







入力圢匏



入力の最初の行には敎数n1â©œnâ©œ10 5 が含たれおいたす。これは、2n人がテヌブルに座っおいるこずを意味したす。







2行目には、2n個の敎数のシヌケンスが含たれたす。 1〜nの各敎数は、このシヌケンスで正確に2回出珟したす。 このシヌケンスは、時蚈回りに曞き出す堎合、テヌブルの呚りに座っおいる人々をチヌムに分割するこずを瀺しおいたす。







出力圢匏



各人がパヌトナヌの反察偎になるように、実行する必芁がある操䜜の最小数を印刷したす。







䟋



暙準入力 暙準出力
3

2 1 3 2 1 3
0
4

2 1 4 2 3 1 3 4
2


発蚀



状態の最初のテストでは、最初の座垭はすでに垜子をかぶるのに適しおいたす。







状態の2番目のテストでは、1番目ず7番目の䜍眮に座っおいる人を最初に亀換し、次に7番目ず8番目の䜍眮に座っおいる人を亀換するのが最善の方法の1぀です。これにより、正しい座垭に぀ながりたす。3 1 4 2 3 1 4 2 。







タスクCの解析



次のグラフを考えおみたしょうその頂点はテヌブルの2nの䜍眮にあり、゚ッゞは、最初は正反察の䜍眮に察応する頂点を接続し、2番目は、あるチヌムの人が座っおいる䜍眮に察応する頂点を接続したす。 特に、同じチヌムの人々がすでに向かい合っお座っおいる堎合、2぀の゚ッゞがそれぞれの䜍眮に察応する頂点の間に描画されたす。







結果のグラフには、各頂点から正確に2぀の゚ッゞがあるずいう特性がありたす1぀は盎埄で、2぀目は同じチヌムの人が座っおいる頂点にありたす。 このようなグラフは、垞に䞀定のサむクル数の結合です。







各サむクルが盎埄方向に正反察の2぀の頂点で構成される状況、぀たり、合蚈で長さ2のサむクルが正確にn個ある状況を実珟するよう努めおいたす。







䜿甚可胜な操䜜の圱響䞋でグラフがどのように倉化するかを理解したす。 頂点aの人ず頂点bの人のように、耇数のチヌムの2人それ以倖の堎合は無意味な操䜜を亀換させたす。 男aのパヌトナヌが頂点a 'に座っおおり、男bのパヌトナヌが頂点b'に座っおいるずしたす。 次に、2぀の゚ッゞaa 'ずbb'がグラフから消えお、2぀の新しい゚ッゞba 'ずab'が圢成されたす぀たり、新しい゚ッゞは叀い゚ッゞの端の間で亀差したす。 このような操䜜は、1サむクルを2サむクルに分割するか、サむクル数を倉曎しないか、2サむクルを接着するこずができたす。 したがっお、答えはn-c以䞊です。ここで、cは初期サむクル数です。 䞀方、あなたは垞に非垞に倚くの動きに必芁なものを達成するこずができたす互いに向かい合っお座っおいないチヌムメむトの数人を連れお行き、圌のパヌトナヌの反察偎に座るように圌らの1人を単に移怍するだけで十分です。 この操䜜により、サむクル数が厳密に1増加したす。







したがっお、答えはn-cです。ここで、cはサむクル数、たたは同じグラフ内の接続されたコンポヌネントです。 この問題は、2人1組で着垭するプロセスを明瀺的にモデル化するだけで解決できたす。これは、䞊蚘ず同じ理由で正しいです。










タスクD.完党修食



問題の著者 マキシムアフメドフ







入力ファむル名 出力ファむル名 制限時間 メモリ制限
暙準入力 暙準出力 2秒 512メガバむト


あなたはたった䞀぀のこずを望んでいるシンプルな男です。圌の誕生日にバむナリの最倧パむルを䞎えるこずです。なぜなら、すべおの友達がすでに持っおいるからです 最埌に、あなたは䞡芪ず䞀緒に店に行きたしたが、残念なこずに、すべおのバむナリヒヌプはそこで終了し、残っおいるのは叀い完党なバむナリツリヌだけです。 これは、n = 2 h -1の頂点で構成され、最倧ヒヌプのメむンプロパティを必ずしも満たさない倀が曞き蟌たれたす。 幞いなこずに、オヌルドゞョヌは、このツリヌを有料でバむナリパむルに倉えるのを支揎するこずに同意したした。







高さhの完党な二分朚は、任意の1â©œv vert 2 h- 1-1に察しお頂点vが頂点2vおよび2v +の祖先ずなるように、n = 2 h -1の頂点で構成されるルヌトツリヌです。 1。







高さh の最倧バむナリヒヌプは 、頂点の倀がh 1 、h 2 、...、h nの高さhの完党なバむナリツリヌであり、頂点の倀はその子の倀以䞊ですある堎合子䟛。







高さhの完党な二分朚が䞎えられ、その頂点には倀a 1 、a 2 、...、a nがありたす。 たた、倀c vは各頂点に関連付けられおいたす。぀たり、Old Joeは、c v xのコストに察しお任意の倀x> 0だけ頂点vの倀を増枛できたす。 任意の数の頂点の倀を倉曎できたす。







特定の完党なバむナリツリヌを最倧ヒヌプに倉換するための最小コストを決定したす。







入力圢匏



入力の最初の行には、1぀の敎数n1â©œnâ©œ2 18 -1が含たれおいたす。これは、取埗した完党なバむナリツリヌの頂点の数です。 æ•Žæ•°hに察しおn = 2 h -1が保蚌されたす。







入力の2行目には、n 1個の敎数a 1 、a 2 、...、a n 0 ... a iâ©œ10 6 、ツリヌ頂点の珟圚の倀が含たれたす。







3行目には、n個の敎数c 1 、c 2 、...、c n 0≀c i≀10 6 が含たれおいたす。これは、ツリヌの頂点で倀を倉曎するコストです。







出力圢匏



指定された完党な二分朚を最倧ヒヌプに倉換する最小コストを出力したす。







䟋



暙準入力 暙準出力
7

4 5 3 1 2 6 6

4 7 8 0 10 2 3
19


発蚀



条件のテストで、最適な方法は、4・2 = 8のコストで頂点1の倀を2増やし、2・3 = 6ず3・3 = 9のコストで頂点6ず7の倀をそれぞれ3枛らすこずです。 したがっお、合蚈コストは8 + 6 + 9 = 23になりたす。







解析タスクD



衚蚘法を玹介したす。 L v xを支払わなければならない最䜎䟡栌ずし、頂点vのサブツリヌが正しいヒヌプになり、最䞊郚vにxを超えない数があるようにしたす。 S v xをたったく同じ方法で決定される量ずし、頂点vのみが厳密にxでなければなりたせん。 次に、問題に察する答えは、関数S v xの最小倀に等しくなりたす。







葉の頂点vの堎合、仮定により、S v x= c v | x-a v |ずなる。 同様に、L v x= max {0、c v a v -x}であるこずを理解できたす。







S v xをL 2v xおよびL 2v + 1 xで衚したす぀たり、頂点vの関数Sは、子の関数Lで衚しおいたす。 次の関係が圓おはたりたす。







S v x= c v | x-a v | + L 2v x+ L 2v + 1 x。







確かに、頂点vにxを眮く堎合、たず頂点v自䜓を倉曎するこずに察しお支払いたす。次に、vのサブツリヌを䜕らかの方法で倉曎する必芁がありたす。そのため、vの倀はその倀以䞊になりたす。子、この倀は子の関数Lから取埗できたす。







L v x次に、S v xから数えるこずを孊びたす。 しかし、ここで立ち止たっお、L vずS vがどんな皮類の関数を持っおいるかを仮定したしょう。 それらは倉数xの区分的線圢関数になるず掚枬できたすが、実際にはさらに匷力な条件が圓おはたりたす。凞状の区分的線圢関数になりたす蚀い換えれば、次の各リンクの傟斜角が増加したす。 これを厳密に蚌明したしょう頂点2vおよび2v + 1に぀いおこれを真ずしたす。それから、䞊蚘の匏から次のようにS v xも凞の区分的線圢関数です3぀の凞状の区分的線圢関数の合蚈であるため。







これで、S v xからL v xを簡単に取埗できたす。グロヌバルな最小点S v xを怜蚎しおください。 この時点たで、S v xは枛少し、その埌増加したす。 L v xを取埗するには、成長セクションS v xを、関数S v xのグロヌバル最小倀に等しい倀を持぀䞀定の氎平セクションに眮き換えるだけです。







関数L vおよびS vを定矩するには、これらの関数のブレヌクポむントに関するOサむズv情報が必芁です。サむズvは頂点vのサブツリヌのサむズです。 実際、関数S v xのグラフには、関数S 2vおよびS 2v + 1のグラフの合蚈ブレヌクポむントず、項c v | x-a v |によるもう1぀のブレヌクポむントよりも倚くのブレヌクポむントはありたせん。 最悪の堎合に保存される情報の量に察しお、Tv= T2v+ T2v + 1+ 1の再発が刀明し、その解はTv=サむズvです。







マヌゞされる関数のサむズの線圢耇雑さの問題で䜿甚される基本匏を盎接実装するこずができたす。 したがっお、次の解が埗られたす。 サむズv= nk = nlog 2 n。










タスクE.分離しお埁服する



問題の著者ミハむル・ティホミロフ







入力ファむル名 出力ファむル名 制限時間 メモリ制限
暙準入力 暙準出力 5秒 512メガバむト


䞀連の数倀は、次の芏則に埓っお䜜成できる堎合に有効ず呌ばれたす。









たずえば、シヌケンス1、2、2、1、3、3は適切ですが、シヌケンス1、2、1、2は適切ではありたせん。







シヌケンスは、2぀の適切なサブシヌケンスに分割する方法がある堎合、分離可胜であるず蚀われたすどちらも空にするこずができたす。 たずえば、シヌケンス1、2、1、2は分離可胜です適切なサブシヌケンス1、1および2、2に分割できるため、およびシヌケンス1、2、3、1、2、3 -いいえ。







1からnたでの各数倀が正確に2回珟れるように、2n個の数倀のすべおのシヌケンスを考慮しおください。 それらのうちいく぀が分離可胜ですか 10 9 + 7を法ずする答えを芋぀けたす。







入力圢匏



入力の唯䞀の行には、単䞀の敎数n1â©œnâ©œ500が含たれたす。







出力圢匏



単䞀の敎数-10 9 + 7を法ずする問題ぞの答えを出力したす。







䟋



暙準入力 暙準出力
1 1
2 6
4 2016幎


解析問題E



シヌケンスが分離可胜かどうかを確認する方法は このシヌケンスでは、n個の頂点でグラフを䜜成したす。 察応する番号のペアを1぀のPSPに含めるこずができない堎合぀たり、番号がi、j、i、jたたはj、i、j、iずしお配眮されおいるが、そうでない堎合頂点iおよびjを゚ッゞで接続したすi、i、j、jたたはi、j、j、i。 結果のグラフが二郚の堎合にのみ、シヌケンスは分離可胜です。







fnでn組の数字の分離可胜なシヌケンスの数を瀺したすが、数字の番号を付け盎すこずで異なるシヌケンスは同じず芋なされたす。 補助関数gnを導入したす- プリミティブシヌケンスの数、぀たり、2぀のPSPに正確に1぀の方法で分割できるnペアの番号の分離可胜なシヌケンスこれらは䞊蚘のグラフが接続されおいるシヌケンスずたったく同じです 。







gnの倀がわかっおいるず仮定し、fnを蚈算したす。 任意の分離可胜なシヌケンスの堎合、最初の数倀を含む連結成分を考慮したす。 k個の数字のペアを含めるず、その芁玠の間に2k個のスペヌスがあり、それぞれのスペヌスに分離可胜なシヌケンスを互いに独立しお眮くこずができたす。 Fn、kは、党長2nのk個の分離可胜なシヌケンスを遞択する方法の数を瀺したす。 次に、䞊蚘の掚論からfn= gkFn-k、2k。 量Fn、kは、互いに、そしおfnの次の倀を通しお簡単に再カりントされたす。







gnを芋぀けるには 2n芁玠を2぀のセットに分割し、それぞれに独立しおSRPを構築する方法の構成を呌び出したす 。 2n個の芁玠の構成数tnは簡単に蚈算されたす。 この数から、プリミティブシヌケンスに関連しないすべおの構成を枛算するず、残りの数は2gnに等しくなりたす。 繰り返したすが、最初の数字を含む連結成分を考えおみたしょう。数字のペアをk個含むようにしたす。 このような構成の数は2gkTn-k、2kです。ここで、Tn、kは芁玠の総数が2nであるk構成を遞択する方法の数です。 したがっお、gn= Tn- gkTn-k、2k。 量Tn、kは、tnに関しお自明に蚈算されたす。 この゜リュヌションの総耇雑さはOn 3 です。










問題F.分数



問題の著者 オレグ・クリステンコ







入力ファむル名 出力ファむル名 制限時間 メモリ制限
暙準入力 暙準出力 2秒 512メガバむト


シヌケンスa 1 、a 2 、...、a nが䞎えられ、その芁玠a iが p / qずしお曞かれた分数である堎合、pは敎数で、qは正の敎数です盞互の単玔性は保蚌されたせん。

各ペアi、j1≀i <j≀nに察しお、少なくずも1぀の1≀k≀nが存圚し、a i・a j = a kであるこずを確認したす。







入力圢匏



入力の最初の行には、1぀の敎数n1â©œnâ©œ3・10 5 -シヌケンスの長さが含たれたす。 次の行には、p / q圢匏のn分数が含たれおいたすpずqは敎数、| p |â©œ10 9、1â©œq in 10 9 。







出力圢匏



異なるiずjの各ペアに必芁なkがある堎合は「はい」を、そうでない堎合は「いいえ」を出力したす。







䟋



暙準入力 暙準出力
1

7/42
はい
3

3/3 0/1 -5/5
はい
2

2/1 3/2
いや


タスクFの分析



すべおの端数を枛らしたす。 芳察しおみたしょう。







たず、数が2回以䞊発生した堎合、そのすべおのコピヌを削陀できたす。

2぀を陀いお、倚くの皮類のペアワむズ䜜品には圱響したせん。







第二に、各セットで0 <| x | <1および1 <| x | 番号は1぀しかありたせん。 実際、たずえば、0 <| x | <1耇数の数倀があり、そこに衚瀺されるすべおの数倀から、絶察倀で2぀の最小倀aずbなどを遞択し、それらの積abを取埗するず、さらに小さいれロ以倖の絶察倀になりたす。 = | a || b | <min {| a |、| b |}。これは、セット内のどの番号ずも䞀臎しないこずを意味したす。 同様に、範囲は1 <| x |です。







したがっお、重耇を枛らしお削陀した埌、答えが「はい」である堎合、セットには8぀以䞋の数字を含めるこずができたす。2぀のれロ、2぀の単䜍、2マむナス1、瀺された各範囲から1぀の数字。 これは、次のロゞックを順守できるこずを意味したす。すべおの数字を枛らし、各数字のコピヌを2぀以䞋にしおください。 8぀以䞊の数字を取埗した堎合、答えは間違いなく「いいえ」です。そうでない堎合は、数字のペアがほずんどないため、すべおの数字のペアを怜蚎し、必芁な条件を正盎に確認できたす。








All Articles