Technocub最終ラりンドの結果ず分析

画像


3月5日、Technocubの最終ラりンド-孊童向けのオリンピックのプログラミングが行われたした。 今幎は3000人が参加し、そのうち400人が決勝に進みたした。 ファむナルの結果ずタスクの分析をご芧ください。


A. アンドリュヌず゜ックス
B. 䌚堎は倉曎できたせん
C. アンドリュヌシャずカラフルなボヌル
D. むノセントずフットボヌルリヌグ
E. 地䞋研究所
F. アクセルずビットランドのマヌストン
G. アンドリュヌシャず生掻の障壁
H. バスずむントラネット


Technocubずは䜕ですか これは、MSTUず連携しおMail.Ru Groupによっお線成された、8〜11幎生の孊生向けのプログラミングオリンピックです。 バりマンずMIPT。 入門オンラむン、予遞オンラむン、最終察面の3段階で構成されおいたす。


入門ラりンド -Codeforcesプラットフォヌムを探玢するためのオンラむンラりンド。 圌らは、システムを理解するために2぀の簡単な問題を解決するように招埅されおいたす。 このようなラりンドは、各予遞の前に開催されたす。 その結果は、オリンピックグリッドの最終評䟡に圱響したせん。


予遞ラりンド -Codeforcesプラットフォヌムでのオンラむンラりンド。 結果によるず、最高のプログラマヌが決勝に進みたす。 このようなラりンドでは、それぞれ6぀の問題を解決するこずが提案されおいたす。 最終段階に到達するには、これらのラりンドの少なくずも1぀で遞択を枡す必芁がありたす。


最終ラりンドは、オリンピアヌドの孊内ステヌゞです。 2017幎3月にモスクワ物理技術研究所ずモスクワ州立工科倧孊でモスクワで開催されたす。 バりマン。 参加者は、Codeforceプラットフォヌム䞊のコンピュヌタヌの問題を解決するために招埅されたす。


受賞。 2017幎、Technocubの受賞者ず受賞者は、倧孊ぞの入孊、MIPTおよびMSTUぞの入孊の特別条件に応じお、第3レベルのオリンピックの恩恵を受けたす。 バりマン。


すべおの垞勀の参加者は賞品を受け取りたす。 通垞、これらはチャンピオンシップのロゎTシャツです。 最初の3぀の堎所では、Appleテクノロゞヌずいう圢で貎重な賞品も提䟛され、勝者はTechnocupです。 受賞者の衚地は、Mail.Ru Groupのオフィスで行われたす。そこでは、開発者ずチャットしお仕事を芋るこずができたす。


画像


Technocub 2017の受賞者


2017幎、テクノクブカでの勝利は、モスクワ州立倧孊SSCの11幎生で、1幎前に2䜍になったモスクワのアレクサンドラ・ドロズドワが優勝したした。 ノィヌツェプスクのアヌサヌ・ペチュホフスキヌがリヌダヌリストの2行目に、モスクワのりラゞミヌル・ロマノフが3行目にいた。 結果の完党版はこちらでご芧いただけたす 。 受賞者の皆さん、おめでずうございたす


画像


最終ラりンドのタスクの分析


決勝の参加者は、3時間で8぀の問題を解決するよう提案されたした。 3人のリヌダヌはそのうちの7人に察凊したした。 別の17人が6぀のタスクを克服し、32人が5぀のタスクに察凊したした。


画像


A.アンドリュヌず゜ックス


テストごずの制限時間-2秒
テストごずのメモリ制限-256メガバむト
入力-暙準入力
出力-暙準出力


アンドリュヌシャは非垞にきちんずした敎頓された少幎なので、圌はい぀も郚屋で秩序を保っおいたす。 特に、圌は自分の物をクロヌれットに入れるこずに非垞に泚意を払っおいたす。


今日、圌は困難な仕事に盎面したした-靎䞋をクロヌれットに入れるこず。 Andryushaには、元々バッグに折りたたたれおいるn皮類の靎䞋がありたす。 靎䞋のペアには1からnたでの番号が付けられおいたす。 アンドレむは靎䞋をペアでクロヌれットに入れたいず思っおいたす。 これを行うには、バッグから靎䞋を1぀ず぀取り出し、靎䞋を匕っ匵るたびに、すでにペアを匕っ匵っおいるかどうかを確認したす。 そうでない堎合、぀たり珟圚の぀た先のペアがただバッグの䞭にあるこずを意味し、アンドリュヌシャは珟圚の぀た先を圌の前のテヌブルに眮きたす。 それ以倖の堎合、圌は珟圚の靎䞋ずクロヌれットのペアを削陀したす。


アンドリュヌシャはずおも気配りがあり、靎䞋をバッグから取り出した順番を芚えおいたした。 今、圌は疑問に思った、そしお同時にテヌブルの䞊に圌の前に眮く靎䞋の最倧数は䜕でしたか アンドリュヌシャがこの質問に答えるのを手䌝っおください。


入力デヌタ


最初の行には、単䞀の敎数n 1≀n≀10 5 -靎䞋のペアの数が含たれおいたす。


2行目には、スペヌスx 1 、 x 2 、...、 x 2 n 1≀x i≀nで区切られた2 n個の数字が含たれおいたす。 ぀たり、番号x iは、アンドリュヌシュのi番目の順序がペアx iから靎䞋を埗たこずを意味したす。


アンドリュヌシャが各ペアから正確に2぀の靎䞋を取り出したこずは保蚌されおいたす。


むンプリント


1行に1぀の数字を印刷したす。これは、か぀おアンドリュヌシャの前のテヌブルにあった靎䞋の最倧数です。


䟋


入力デヌタ
1
1 1


むンプリント
1


入力デヌタ
3
2 1 1 3 2 3


むンプリント
2


ご泚意


最初の䟋では、Andryushaはバッグの最初のペアから靎䞋を取り出し、テヌブルに眮きたす。 その埌、圌は次の靎䞋を取り出したす。これは最初のペアのもので、䞡方の靎䞋をすぐにクロヌれットに入れたす。 したがっお、最倧1぀の靎䞋がテヌブルに眮かれたす。


2番目の䟋で䜕が起こるか考えおみたしょう。



したがっお、䞀床に最倧2぀の靎䞋がテヌブルに眮かれたす。


タスク解析

実装する簡単なタスク。 各タむプの靎䞋がテヌブルにあるかどうかを配列に保存し、靎䞋の数ずこの数量の最倧倀も保存したす。 次に、゜ックスを1぀ず぀凊理し、必芁なすべおの倀を曎新したす。


難易床 O  n 時間ず蚘憶。


B.䌚堎は倉曎できたせん


テストごずの制限時間-5秒
テストごずのメモリ制限-256メガバむト
入力-暙準入力
出力-暙準出力


Bytesitiのメむンストリヌトには、南から北ぞの長い盎線がありたす。 盎線での方向付けの䟿宜䞊、最南の家から北に向かっおメヌトル単䜍で枬定された座暙が入力されおいたす。


珟圚、通りのいく぀かのポむントにn人の友人がいお、 i番目の友人は座暙x iメヌトルのポむントにあり、通りに沿った南たたは北の2぀の方向のいずれかで毎秒最倧速床v iメヌトルで移動できたす。


あなたの仕事は、メむンストリヌトのある時点でn人の友人党員が䌚うこずができる最小時間を決定するこずです。 友達が出䌚うポむントは敎数座暙を持぀必芁がないこずに泚意しおください。


入力デヌタ


最初の行には、単䞀の敎数n 2≀n≀60 000-友人の数が含たれたす。


2行目には、 n個の敎数x 1 、 x 2 、...、 x n 1≀x i≀10 9 -メヌトル単䜍の友人の珟圚の座暙が含たれたす。


3行目には、 n個の敎数v 1 、 v 2 、...、 v n 1≀v i≀10 9 が含たれたす。1秒あたりのメヌトルでの友人の最倧速床です。


むンプリント


n人すべおが1地点で䌚うこずができる最小時間秒単䜍を出力したす。


絶察誀差たたは盞察誀差が10-6を超えない堎合、回答は正しいずみなされたす。 正匏には、あなたの答えをaずし、審査員の答えをbずしたしょう。 あなたの答えは正しいずみなされたす  frac|a−b|max1、b leq10−6。


䟋


入力デヌタ
3
7 1 3
1 2 1


むンプリント
2.000000000000
入力デヌタ
4
5 10 3 2
2 3 2 4


むンプリント
1.400000000000


ご泚意


最初の䟋では、すべおの友人が2秒埌にポむント5で䌚うこずができたす。 これを行うには、最初の友人が垞に最高速床で南ぞ行き、2番目ず3番目の友人が最高速床で北ぞ行く必芁がありたす。


タスク解析

回答によるバむナリ怜玢を䜿甚したす。 バむナリ怜玢の内郚では、すべおの友人がt秒以内に䌚えるかどうかを確認する必芁がありたす。 この間、 i番目の友人はセグメント[ x i - tv i 、 x i + tv i ]の任意のポむントにいるこずができたす。 䌚議を可胜にするには、いく぀かのポむントがこれらすべおのセグメントに属しおいる必芁がありたす。぀たり、亀差点が空ではない必芁がありたす。


セグメント[ l 1 、 r 1 ]、...、[ l n 、 r n ]のセットを亀差させる䟿利な方法は、 L = max l iおよびR = min r iを蚈算するこずです。 L≀Rの堎合、[ L 、 R ]は目的の亀差点です。それ以倖の堎合、亀差点は空です。


難易床 On cdotlog varepsilon−1時間ずOnメモリ。 ここで、εは必芁な盞察誀差です。


C.アンドリュヌシャずカラフルなボヌル


テストごずの制限時間-2秒
テストごずのメモリ制限-256メガバむト
入力-暙準入力
出力-暙準出力


アンドリュヌシャは子䟛の頃から毎日公園を歩いおきたした。 公園の小道ず開拓地はい぀も圌ずあたりにも同䞀であるように思われ、ある日圌はそれらを装食しお倚様化するこずに決めたした。


公園は、䞡偎の小道で盞互に接続されおいるn-1n個の空き地で構成されおおり、各空き地から他の遊歩道に沿っお歩くこずができたす。


アンドリュヌシャは、各牧草地に䞀぀の色の぀いたボヌルを掛けるこずに決めたした。 ボヌルの色は1から始たる正の敎数で蚭定されたす。公園をより倚様にするために、アンドリュヌシャはボヌルの色を特別な方法で遞択するこずにしたした。 ぀たり、 aずbがトラックで接続され、 bずcがトラックで接続されるように、ペアごずに異なる3぀のクリアリングa 、 b 、 cに぀いお、これらのクリアリングのボヌルの色がペアごずに異なるようにボヌルを掛けたいず考えおいたす。


Andryushaは、ボヌルの賌入に倚額のお金を費やさないために、できるだけ少ない数の異なる色を䜿甚したいず考えおいたす。 Andryushaはプログラミングがあたり埗意ではないので、この問題の解決を手䌝っおほしいず頌たれたす。


入力デヌタ


最初の行には、単䞀の敎数n 3≀n≀2•10 5 -公園内の空き地の数が含たれおいたす。


次の n -1行にはそれぞれ、2぀の敎数xずy 1≀x、y≀n-次のトラックで接続された2぀のクリアリングの数が含たれおいたす。


どの牧草地からでも、パスに沿っお他の牧草地に行くこずができたす。


むンプリント


最初の行に敎数kを印刷したす-Andryushaが䜿甚する必芁がある色の最小数。


2行目では、 n個の敎数を印刷したす。i番目は、 i番目の草原に掛けたいボヌルの色に等しくなりたす。 各数倀は1からkの間でなければなりたせん。


䟋


入力デヌタ
3
2 3
1 3


むンプリント
3
1 3 2


入力デヌタ
5
2 3
5 3
4 3
1 3


むンプリント
5
1 3 2 5 4


入力デヌタ
5
2 1
3 2
4 3
5 4


むンプリント
3
1 2 3 1 2


ご泚意


最初の䟋では、条件から、公園は3぀の空き地で構成され、それらは盎列に接続されおいたす1→3→2。したがっお、各空き地のボヌルの色はペアごずに異なる必芁がありたす。


画像
最初の䟋の図


2番目の䟋では、公園内に次の3぀のクリアリングが盎列に接続されおいたす。



ここから、クリアリングの各ペアがトリプルにあるこずがわかりたす。぀たり、すべおのクリアリングのボヌルの色はペアごずに異なっおいる必芁がありたす。


画像
2番目の䟋の図


3番目の䟋には、次のトリプルがありたす。



これは、1぀たたは2぀の色では十分ではないこずを意味し、3぀の色に぀いおは答えが存圚し、䟋に瀺されおいたす。


画像
3番目の䟋の図


タスク解析

頂点vの次数がdである堎合、答えは少なくずもd + 1です。実際、 vの 2぀の近傍はvを通る長さ3の共通パス䞊にありたす。 さらに、 vは、3぀のピヌクずその近隣のいずれかずの共通のパス䞊にありたす非近隣を䜿甚しおいる可胜性がありたす。 したがっお、 vずそのすべおの近傍は、ペアごずに異なる色を持぀必芁がありたす。


この芋積もりが最適であるこずを瀺したす。 D + 1色でツリヌの色付けを䜜成したす。Dは頂点の最倧次数です。 ツリヌを任意の頂点にぶら䞋げ、その埌、ルヌトずそのすべおの息子を色1、2などで色付けしたす。 残りの頂点は、次の芏則に埓っお色付けされたす。頂点vの色がxで、芪の色がyの堎合、子vは1から始たり、色xずyをスキップしお連続した色を受け取りたす。 D + 1より倧きい数倀の色が必芁になるこずは決しおありたせん。


実装の芳点から芋るず、この手順は通垞の詳现な手順です。


難易床 O  n 時間ず蚘憶。


D.むノセントずフットボヌルリヌグ


テストごずの制限時間-2秒
テストごずのメモリ制限-256メガバむト
入力-暙準入力
出力-暙準出力


むノセントは、ベむトランドで新しく蚭立されたフットボヌルリヌグの瀟長です。 圌が盎面する最初の仕事は、すべおのリヌグ戊がテレビで攟送されるようにするこずです。 ご存知かもしれたせんが、サッカヌの詊合䞭は、省略されたチヌム名ずラむブスコアが画面に衚瀺されたす。 もちろん、ラむバルクラブの略称が䞀臎する堎合は奇劙になるので、むノセントは各リヌグクラブの名前を3文字に枛らしお、すべおのリヌグチヌムの名前が異なるようにする方法を理解する必芁がありたす。


各クラブの名前は2぀の単語で構成されおいたす。チヌムの名前ず、クラブが所圚する郜垂「DINAMO BYTECITY」などです。 むノセントは名前をあたりゆがめたくないので、次のような方法で各クラブの短瞮名を遞択したいず考えおいたす。


1クラブの省略名がチヌム名の最初の3文字ず䞀臎したか、たずえば、䞊蚘のチヌムの堎合は「DIN」、
2クラブの短瞮名の最初の2文字がチヌム名の最初の2文字ず䞀臎し、3番目がチヌムの垂の最初の文字ず䞀臎した。 たずえば、䞊蚘のコマンドの堎合は「DIB」です。


さらに、チヌムxに察しお名前の2番目のバリアントが遞択されおいる堎合、コマンドxの名前の最初のバリアントず䞀臎する、短瞮名の最初のバリアントが遞択されおいるチヌムは存圚しないはずです。 たずえば、䞊蚘のコマンドの略語が「DIB」である堎合、略語の最初のバリアントが遞択されおいるチヌムは略語「DIN」を持぀べきではありたせん。 䞀郚のチヌムが「DIN」ずいう名前を取埗するこずもできたす。「DI」はチヌム名の最初の2文字で、「N」は郜垂の最初の文字です。 もちろん、2぀のチヌムに同じ短い名前を付けるこずはできたせん。


むノセントが各チヌムの略称を遞択するのを助けたす。 これが䞍可胜な堎合は、報告しおください。 いく぀かの可胜な答えがある堎合、むノセントはそれらのいずれかに適合したす。 省略名の䞡方のバリ゚ヌションが特定のチヌムで䞀臎する堎合、むノセントはこれらのオプションのいずれか1぀だけが遞択されおいるず正匏に想定したす。


入力デヌタ


最初の行には、1぀の敎数n 1≀n≀1000-リヌグ内のフットボヌルクラブの数が含たれおいたす。


次のn行のそれぞれには、チヌムの名前ず次のクラブの垂の名前の2぀の単語がありたす。 チヌム名ず郜垂名はどちらもラテンアルファベットの倧文字で構成され、長さは少なくずも3から20以䞋です。


むンプリント


Innocentの芁件を満たす省略名を遞択できない堎合は、「NO」ずいう行のみを出力したす。


それ以倖の堎合は、最初の行に「YES」ず印刷したす。 次に、 n行を印刷し、各行に次のクラブの短瞮名を印刷したす。 入力で指定されたのず同じ順序でクラブを衚瀺したす。


可胜な回答が耇数ある堎合は、いずれかを印刷したす。


䟋


入力デヌタ
2
DINAMO BYTECITY
サッカヌモスクワ


むンプリント
はい
DIN
フヌ


入力デヌタ
2
DINAMO BYTECITY
DINAMO BITECITY


むンプリント
いや


入力デヌタ
3
プレむフットボヌルモスクワ
PLAYVOLLEYBALL SPB
GOGO TECHNOCUP


むンプリント
はい
PLM
Pls
ゎグ


入力デヌタ
3
ABC DEF
ABC EFG
ABD OOO


むンプリント
はい
アブド
安倍
阿保


ご泚意


最初の䟋では、䞡方のチヌムの名前の最初のバリ゚ヌションを遞択できたす。


2番目の䟋では、1぀のチヌムが名前の最初のバリ゚ヌションを遞択するこずは䞍可胜であり、これらのチヌムの名前の最初のバリ゚ヌションが䞀臎する堎合、2番目のチヌムは名前の2番目のバリ゚ヌションを遞択するこずができないため、名前を遞択するこずはできたせん。


3番目の䟋では、最初の2぀のチヌムの2番目の名前オプションず、3番目のチヌムの最初のオプションを遞択できたす。


4番目の䟋では、名前xの最初のバリアントが名前yの最初のバリアントず䞀臎しない堎合、コマンドxの遞択した名前が名前yの最初のバリアントず䞀臎するこずが蚱可されおいるこずに泚意しおください。


タスク解析

a iずb iをそれぞれi番目のクラブの名前の最初ず2番目のオプションに指定したす。


すべおのa iが異なる堎合、それらをすべお名前ずしお䜿甚できたす。 それ以倖の堎合、䞀郚のクラブiおよびjに぀いおa i = a jず仮定するず、それらを同時に䜿甚するこずはできたせん。 さらに、たずえば、このような状況でa iずb jを遞択するこずも、条件によっお犁止されおいたす。 名前ずしおb iずb jを遞択する必芁があるこずがわかりたす。


今、他のクラブkに察しお a k = b iがある堎合、その名前ずしおb kを遞択する必芁がありたす。 このようなチェヌンの䟝存関係は、任意のバむパスアルゎリズムで凊理できたす。 ある時点で同じ名前を䜿甚する必芁がある堎合、解決策はありたせん。そうでない堎合は、すべおの競合を解決した埌、適切な解決策が埗られたす。


難易床 On時間ずメモリがきちんず実装されおいるこれらの制限では、これは必芁ありたせんでした。


E.地䞋研究所


テストごずの制限時間-1秒
テストごずのメモリ制限-256メガバむト
入力-暙準入力
出力-暙準出力


巚倧な地䞋研究所で、悪の䌁業アンブレラは恐ろしい実隓のためにクロヌンを䜜成したす。 䌚瀟がアンドリュヌシャずいう名前の男の子をクロヌンするず、圌は圌の仲間より賢い。 アンドリュヌシャは、䜕かがおかしいこずに気づきたした。 圌は䌁業ず戊うためにクロヌンを育お、圌らは実隓宀から抜け出す方法を探し始めたした。 同瀟は地䞋耇合斜蚭の自己砎壊のプロセスを開始する以倖に遞択肢がありたせんでした。


実隓宀は、 n個の頂点ずm個の゚ッゞの連結グラフです。 このグラフのいく぀かの頂点で、 k Andryushaクロヌンは実隓宀から抜け出す方法の怜玢を開始したす。 怜玢プロセスでは、1秒ごずに゚ッゞに沿っお隣接する頂点に移動したす。各頂点には、奜きなだけクロヌンを䜜成できたす。 各クロヌンは、ある時点で停止しお怜玢を停止できたすが、それらを確実に開始する必芁がありたす。぀たり、少なくずも1぀のピヌクを蚪れる必芁がありたす。 さらに、出力は実隓宀の任意の堎所に配眮できるため、クロヌンはグラフ党䜓を巡回する必芁がありたす。぀たり、少なくずも1回は少なくずも1぀のクロヌンがグラフの各頂点にアクセスする必芁がありたす。


クロヌンの時間は制限されおおり、それぞれのクロヌンはそれ以䞊移動するこずができなくなりたす \å·Š lceil frac2nk\右 rceilラボが爆発する前の郚屋。


タスクは、グラフの頂点にクロヌンを配眮し、各クロヌンがグラフをバむパスするパスを掚枬するこずです。 さらに、各パスの頂点の数はもうないはずです \å·Š lceil frac2nk\右 rceil。


入力デヌタ


最初の行には、3぀の敎数n 、 m 、およびk 1≀n≀2•10 5 、 n -1≀m≀2•10 5、1≀k≀nが含たれたす-グラフの頂点の数、グラフの゚ッゞの数、クロヌンの数。


次のm行のそれぞれには、2぀の敎数x iおよびy i 1≀x i 、 y i≀n-次の゚ッゞで接続された2぀の頂点の数が含たれたす。 グラフには、ルヌプず耇数の゚ッゞを含めるこずができたす。


グラフが接続されおいるこずが保蚌されたす。


むンプリント


k行を印刷したす。 i番目の行の先頭に敎数c i  1 leqci leq left lceil frac2nk right rceil -i番目のクロヌンが蚪問する頂点の数、そしおc i integers-圌が蚪問する頂点の数、それらが蚪問された順序で。 クロヌンが以前に蚪問したこずがある堎合でも、クロヌンが蚪問するたびにピヌクを印刷したす。


答えが存圚するこずが保蚌されたす。


䟋


入力デヌタ
3 2 1
2 1
3 1


むンプリント
3 2 1 3


入力デヌタ
5 4 2
1 2
1 3
1 4
1 5


むンプリント
3 2 1 3
3 4 1 5


ご泚意


最初のテストでは、クロヌンは1぀のみで、頂点を順番に2、1、3巡回したす。これは、6぀の巡回頂点の制限に適合したす。


2番目のテストでは2぀のクロヌンがあり、それらは2、1、3および4、1、5の順序で頂点を蚪問したす。これは5぀の蚪問された頂点の制限に適合したす。


タスク解析

グラフの任意の頂点からディヌプりォヌクを開始し、オむラヌラりンド-ラりンドが頂点を蚪問する順序、およびラりンドが頂点に到達するたびに、特にvから行われる各再垰呌び出しの埌に頂点vが曞き出される順序を曞き出したす。 オむラヌバむパスには2 n -1個の゚ントリが含たれおおり、 k = 1の正解であるこずに泚意しおください。䞀般的なケヌスkでは、オむラヌバむパスを最倧⌈2 n / k⌉のサむズのk個の郚分にカットし、これらの郚分を応答ずしお出力したす。 条件により、各パヌトに少なくずも1぀の頂点が必芁であるため、構築された回答の空のパヌツに远加する頂点はすべおあるこずに泚意しおください。


難易床 O  n + m 時間ず蚘憶。


F.アクセルずビットランドのマヌストン


テストごずの制限時間-5秒
テストごずのメモリ制限-256メガバむト
入力-暙準入力
出力-暙準出力


2人の友人、アクセルずマヌストンがビットランドを旅したす。 ビットランドにはn郜垂があり、その䞀郚は䞀方向の道路で接続されおいたす。 ビットランドの道路は歩行者ず自転車です。 ビットランドでは、郜垂の各ペア間にいく぀かの道路が存圚する可胜性があり、郜垂から郜垂たでの道路もありたす。 ただし、ビットランドの2぀の道路は、同じ開始、終了、タむプを同時に持぀こずはできたせん。


友人は郜垂1にいお、旅行の旅皋を䜜成したいず考えおいたす。 アクセルは歩くのが倧奜きで、マヌストンは自転車を奜みたす。 友人ごずにルヌトを倉化させお興味深いものにするために、圌らは次のように移動した道路のタむプの亀互順序を遞択したす。



ルヌトを構築する最初の数ステップは、P、PV、PVVP、PVVPVPPV、PVVPVPPVVPPVPVVPなどのようになりたす。


その埌、友人はビットランドの道路に沿っお郜垂1で動き始め、そのたびにルヌトの次のシンボルに埓っお次の道路のタむプを遞択したす。 適切な道路を遞択できない堎合、友人は旅行を終了しお垰宅したす。


構築された䞀連の皮類の道路に埓っおいる堎合、友人が旅行の最倧可胜期間を決定できるようにしたす。 友人が10 18以䞊の道路で構成されるパスを芋぀けるこずができる堎合、長さの代わりに-1を印刷したす。


入力デヌタ


最初の行には、2぀の敎数nおよびm 1≀n≀500、0≀m≀2 n 2 -ビットランドの郜垂ず道路の数がそれぞれ含たれおいたす。 次のm行は道路を衚したす。 これらの行のi番目には、3぀の敎数v i 、 u iおよびt i 1≀v i 、 u i≀n、0≀t i≀1が含たれたす。ここで、 v iおよびu iは開始郜垂の数です。 i番目の道路の終点。tiはi番目の道路のタむプを蚭定したす0-歩行者甚道路、1-自転車甚道路。 1≀i 、 j≀m 、 v i ≠ v j 、 u i ≠ u j 、たたはt i ≠ t jのように、異なる数i 、 jの各ペアに察しお保蚌されたす。


むンプリント


友人が厳密に10 18を超える長さの適切なパスを芋぀けるこずができる堎合、単䞀の数倀-1を出力したす。 それ以倖の堎合は、適切なパスの最倧長、぀たり友人が通過できる道路の最倧数を印刷したす。


䟋


入力デヌタ
2 2
1 2 0
2 2 1


むンプリント
3


入力デヌタ
2 3
1 2 0
2 2 1
2 2 0


むンプリント
-1


ご泚意


最初の䟋では、道路1で郜垂1から郜垂2に1回通過し、道路2で郜垂2から郜垂2に2回通過するこずで、長さ3のパスを取埗できたす。


2番目の䟋では、最初に道路1を通り、次に次のタむプの道路に応じお道路2たたは3を遞択しお、任意の長さのパスを取埗できたす。


タスク解析

A iは 、アクセスず属性のi回の繰り返しによっお埗られるバむナリ文字列を瀺したす。たずえば、 A 0 = 0、 A 1 = 01などです。 たた、 画像 。 定矩により 画像 、そしお 画像 。


行列P kずQ kを数えたす。Pk / Q k  v 、 u の芁玠は、頂点v 、 uのペアに察しお1に等しいので、 vからuたで行A k / B kに察応するパスがありたす。 行列P 0ずQ 0は、明らかにそれぞれ0゚ッゞず1゚ッゞの隣接行列です。 さらに、ある頂点w P k  v 、 w = Q k  w 、 u = 1であり、同様の基準が機胜する堎合にのみ、 P k + 1  v 、 u = 1 Q k + 1  v 、 u の堎合。 したがっお、 P kおよびQ kを䜿甚しお、時間O  n 3  に察しお P k + 1およびQ k + 1を蚈算できたす実際、再蚈算はビット行列の乗算で構成されたす。 画像 、 画像 


ここで、 P kずQ kの助けを借りお、答えを芋぀けたす。 珟圚の最倧の回答Lず、長さLの正しいパスに沿っお頂点1から到達可胜な頂点のセットSを保存したす。 k 0のある倀からkを降順に䞊べ、 Lを2 k増やすこずができるかどうかを確認したす。 L番目の䜍眮の埌、次の2 k文字は、ビットレコヌドLのナニット数のパリティに応じお文字列A kたたはB kを圢成したす。 S 'をAk / Bkに察応するパスに沿っおSから到達可胜な頂点のセットずしたす。 Sが空でない堎合、 Lを2 k増やしおS = Sを割り圓おたす。それ以倖の堎合は、䜕もしたせん。 最終的に、2 k 0未満の堎合、 Lは最倧パス長になりたす。


k 0 = 60を䜿甚したす。これは、2 60を超える堎合、答えの正確な倀に関心がないためです。 時間内に解決策が刀明したした 画像 遅すぎる。 行列乗算のビット最適化を䜿甚したす。これにより、 画像 回。


難易床 画像 時間ず 画像 メモリどこ 画像 、w = 64はビット単䜍のマシンワヌドの長さです。


G.アンドリュヌシャず生掻の障壁


テストごずの制限時間-4秒
テストごずのメモリ制限-256メガバむト
入力-暙準入力
出力-暙準出力


最近、アンドリュヌシャは玠晎らしいスロットマシンを芋぀けたした。 それは正方圢に分割された垂盎に配眮された板でした。 合蚈で、ボヌドには巊から右に1からwたでの番号が付けられたw列があり、1からhたで䞋から䞊に番号が付けられたh行がありたした。


さらに、マシンのいく぀かの行にパヌティションが配眮されおいたした。 合蚈でn個のパヌティションがあり、それらのi番目は行u iにあり、列l i〜r iのすべおのセルを占有したす。 同じ行に2぀のパヌティションはありたせんでした、Andryushaは確かにそれを思い出したした。 さらに、各行には、パヌティションが存圚しないセルが少なくずも1぀ありたした。


マシンのどのコラムでも、䞊からボヌルを​​投げるこずができたす。 この堎合、ボヌルは、パヌティションに遭遇するか、䞋からマシンから脱萜するたで萜䞋し始めたした。 , , . , , . , - , . .


画像
,


, , . , , . , i , , s i ( , u i + s i ), , . , , ( h + 1).


, . , . , 10 9 + 7.


入力デヌタ


h , w n (1 ≀ h ≀ 10 9 , 2 ≀ w ≀ 10 5 , 0 ≀ n ≀ 10 5 ) — , .


n . i - u i , l i , r i , s i (1 ≀ u i ≀ h , 1 ≀ l i ≀ r i ≀ w , 1 ≀ s i ≀ 10 9 ) — , i - . , , , . , , , , u i .


むンプリント


— 10 9 + 7.


䟋



10 5 1
3 2 3 10



7



10 5 2
3 1 3 10
5 3 5 10



16



10 5 2
3 1 3 7
5 3 5 10



14



10 15 4
7 3 9 5
6 4 10 1
1 1 4 10
4 11 11 20



53


ご泚意


最初の䟋では、1぀の障壁がありたす。2番目たたは3番目の列にボヌルを投げるず、2぀のボヌルがドロップアりトしたす。総回答7。


2番目の䟋では、ボヌルを巊から右に列に投げた堎合、ドロップされるボヌルの数はそれぞれ2、2、4、4、4です。


3番目の䟋では、ボヌルを巊から右の列に投げる堎合、ドロップされるボヌルの数はそれぞれ1、1、4、4、4です。最初の障壁は、その䞊に盎接萜䞋するボヌルを通過させたすが、2番目の障壁から萜䞋するボヌルは通過させないこずに泚意しおください。


4番目の䟋では、ボヌルを巊から右に列に投げた堎合、ドロップされるボヌルの数はそれぞれ2、2、6、6、6、6、6、6、6、1、2、1、1、1、1です。䞋の図では、ボヌルが7列目に投入された堎合が考慮されおいたす。


タスク解析

1: . i - , y u i ≀ y ≀ u i + s i . x , .


各頂点をカバヌする倚くのアクティブなセグメントでセグメントツリヌを開始したす。 新しいアクティブなパヌティションを远加するには、それを 画像 ツリヌの最䞊郚。各パヌティションにこのパヌティションに関する゚ントリを远加したす。 このパヌティションを削陀するには、これらの゚ントリをすべお削陀したす。 珟圚アクティブなパヌティションの䞭で最も高いパヌティションを知りたい堎合は、 xをカバヌするツリヌの頂点を調べ、各頂点でセット内の最も高いパヌティションを調べたす。 たた、パヌティションごずに、1぀のボヌルを取埗した結果結果のボヌルの数を保存したす。 この結果を芋぀けるには、パヌティションのアクティブ化の時点で、ツリヌに察しお2぀のリク゚ストを行う必芁がありたすボヌルが巊右に萜ちる堎合。 耇雑な゜リュヌションを取埗したす 画像 実行時の2番目の察数std::set 。


解決策2今回は、䞊から䞋に移動しお、投げたすべおのボヌルの䜍眮を維持したしょう。 ある時点でボヌルのグルヌプが衚瀺された堎合は、それらを組み合わせおグルヌプのサむズを蚘憶したす。 各列では、ボヌルのすべおのグルヌプをスタックに栌玍し、䞋のグルヌプを䞊に栌玍したす。


パヌティション[ l 、 r ]に䌚いたしょう。 範囲[ l 、 r ]の各列に぀いお、いく぀かの䞋䜍グルヌプがこのパヌティションに分類され、それらすべおがパヌティションの端に沿っお最倧で2぀グルヌプになりたす。 サむズwのセグメントのツリヌを䜜成し、各列に察しお、この列の最も䜎いグルヌプの高さを栌玍したす。 ここで、少なくずもセグメント[ l 、 r ]で、察応するグルヌプをスタックから排出したすツリヌの曎新を忘れずに。 最埌に、新しいグルヌプを䜜成し、目的のスタックに配眮したす。 すべおのパヌティションを凊理した埌に残っおいるボヌルのグルヌプは、䞋から萜ちたす。


暙準的な枛䟡償华の掚論では、合蚈でO  n + w 操䜜が実行されるため、゜リュヌションの耇雑さは次のようになりたす。 画像 。


H.バスずむントラネット


テストごずの制限時間-10秒
テストごずのメモリ制限-256メガバむト
入力-暙準入力
出力-暙準出力


町で 画像 バスルヌトを起動したした。これは、平面䞊の閉じたポリラむンであり、そのすべおのリンクは座暙軞に平行です。 経路䞊では、 m個のバスが動䜜し、同じ䞀定速床で同じ方向に砎線に沿っお呚期的に移動したすこのタスクのバス停時間は無芖できたす。


バスは、等間隔で砎線の最初のピヌクでルヌトに沿っお動き始めたす。 Tを1぀のバスがルヌト党䜓を䞀呚する時間ずしたす。 次に、バス1は時間0、バス2-時間T / m 、3番目-時間2 T / mなどで移動を開始したす。 最埌に、バスmは m -1 T / mから始たりたす。 したがっお、隣接するバスのすべおのペア最埌ず最初を含む間の間隔は同じです。


バスは、同じ電力のワむダレス送信機を䜿甚しお情報を亀換できたす。 バスの送信機電力がDの堎合、 D以䞋の距離にあるバス間で情報の亀換が可胜です。


さらに、バスにはルヌトの分散远跡システムが装備されおいたす。 すべおのバスがスケゞュヌル通りに厳密に移動するためには、システムはすべおのバス䞊のデヌタを定期的に同期する必芁がありたす。 同期時には、バス1はバス2ずバス2、バス3はバス3ず情報を亀換したす。さらに、バスmはバス1ず情報を亀換したす。


分析郚門の埓業員ずしお、少なくずも時折同期を実行できるDの最小倀を芋぀けるタスクを䞎えられたした。


入力デヌタ


最初の行には、2぀の敎数nずm 2≀n、m≀10 5 -それぞれポリラむンの頂点の数ずバスの数が含たれおいたす。


次のn行は、ポリラむンの頂点をその走査順に説明しおいたす。 これらの各行には、2぀の敎数x i 、 y i -1000≀x i 、 y i≀1000-次の頂点の座暙が含たれたす。


ポリラむンの各リンク最埌の頂点ず最初の頂点の間を含むが座暙軞の1぀に平行であるこずが保蚌されたす。 さらに、折れ線の連続する2぀の頂点は䞀臎したせん。 ポリラむンには自己亀差があり、1぀のセグメントを数回通過するこずができたす。


むンプリント


1぀の実数-問題ぞの答えを印刷したす。 絶察誀差たたは盞察誀差が10-6を超えない堎合、答えは受け入れられたす。


䟋


入力デヌタ
4 2
0 0
0 1
1 1
1 0
出力
1.000000000
入力デヌタ
2 2
0 0
1 0
出力
0.000000000


ご泚意


すべおのバスが1秒あたり1単䜍の距離を走行できるようにしたす。 最初の䟋では、0.5秒埌、バスは1の距離にあるため、 D = 1を遞択できたす。


2番目の䟋では、0.5秒埌に䞡方のバスがポむント0.5、0になるため、 D = 0を遞択できたす。


画像
結果、7列目にボヌルを投げた堎合


タスク解析

答えに察しおバむナリ怜玢を行いたす。 内郚では、バス1ず2、2ず3、...、 nず1のすべおのペアが同時にx以䞋の距離にあるような瞬間があるかどうかを確認する必芁がありたす。


p  t を、時刻tの埌のバス1時刻0に出発の䜍眮ずしたす。 ||の堎合、むンスタントtを goodず呌びたす。 p  t + T / m  -p  t || ≀x、ここで|| a - b || は、点aず点bの間の距離を意味したす。 t 、 t + T / m 、...、 t + m -1 T / mがすべお良奜であるようなモヌメントtがある堎合、答えは少なくずもxです。


ベクトルp  t + T / m  -p  t の2次元グラフを時間内に構築したす。このため、点p  t ずp  t + T / m がポリラむンのどちら偎にあるかを監芖したす。 各ポむントがそれぞれの偎に移動する堎合、ベクトルp  t + T / m  -p  t は時間ずずもに線圢に倉化し、それによりグラフも区分的に線圢になりたす。 ポむントの1぀が巊右に移動するのはO  n のモヌメントしかないため、2぀のポむンタヌを䜿甚しおグラフを時間O  n にプロットできたす。


ここで、固定xの適切なモヌメントtのセットを芋぀けたす。 差分グラフの各セグメントに察しお個別にこれを行い、それから答えを䞀緒に構成したす。 å·®q = p  t + T / m  -p  t の芳点から、条件||がありたす。 q || ≀x、ここでqは特定のセグメント䞊で実行されたす。 これは、セグメントず円の亀点を芋぀ける暙準的な問題です。これは、2次方皋匏を解くこずや、特定のベクトルを目的の角床だけ回転させるなど、さたざたな方法で解決できたす。 いずれの堎合でも、結果は䞀定の期間たたは空のセットです。 グラフの䞀郚ではqを䞀定に保぀こずができるこずに泚意しおください。この堎合は個別に凊理するのが最適です。


p  t 、 p  t + T / m などの瞬間を芋぀ける 良い堎合は、セグメント[0、 T ]をm個の等しい郚分にカットし、それらを互いの䞊に「重ね合わせ」たす。これにより、良いセグメントもパヌツにカットする必芁がありたす。 ここで、適切な瞬間tはm回カバヌされるポむントです。 そのような点の怜玢は、走査線の暙準的なアプリケヌションです。


難易床 画像 ここで、 εは必芁な盞察粟床です。




ニュヌスをフォロヌしおください 新しいむベントに関する情報を芋逃さないように、Technokub Vkontakte グルヌプに登録しおください 。



Source: https://habr.com/ru/post/J325052/


All Articles