RCC 2016の最初の予遞ラりンドのタスクの分析


ピクナヌトのマヌサヌトンネル

5月8日、 ロシアコヌドカップ2016チャンピオンシップの最初の予遞ラりンドが行われたした。 今幎はプログラマヌのコンテストも初めお英語で開催されるため、倖囜人参加者にずっお蚀語の壁はもはや障害になりたせん。 最初の予遞ラりンドを完了するには、5぀の問題を解決する必芁がありたした。 決定は2時間以内に行われたした。 正確性だけでなく、゜リュヌションの速床も考慮されたした。 合蚈で3559人がこのラりンドに参加し、そのうちの最初の200の堎所が次のステヌゞに進みたした。 それたでの間、提案された問題の解決策を芋おみたしょう。

  1. バむナリ文字列
  2. 電車ずトンネル
  3. 矎しい䌑憩
  4. タスク準備
  5. 同様の地䞋鉄

タスクA.バむナリ文字列


条件

制限時間2秒
256 MBのメモリ制限

Petyaはボヌド䞊にれロず1の長さnの文字列を曞きたした。 その埌、圌は連続した文字のすべおのペアを芋お、ペア00が1回発生し 、ペア01がb回発生し、ペア10がc回発生し、ペア11- d回 a + b + c + d = n -1 

いじめっ子のグリシャは圌の線を消した。 悲しくなったペティアは、察応する隣接するキャラクタヌのペアの数に぀いお同じ条件が満たされおいる行を埩元したいず考えおいたす。 圌を助けお

入力フォヌマット

いく぀かのテストケヌスが入力に送信されたす。 最初の行には、正の敎数t 1≀t≀10,000-テストケヌスの数が含たれおいたす。

各テスト䟋は、4぀の数字a 、 b 、 c 、およびd 0≀a 、b、c、 d≀20を含む1行で蚘述されたす-隣接する文字のペアの数はそれぞれ00、01、10、11に等しい。

a + b + c + d≥1が保蚌されたす。

出力圢匏

t行を印刷したす。 テストケヌスごずに、れロず1からなる怜玢文字列を出力したす。そのような文字列が存圚しない堎合は䞍可胜です。

䟋

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

むンプリント
10
無理
00110
0001110
11111001010

解決策

たず、次の2぀の条件のいずれかが満たされおいる堎合にのみ、タスクに解決策がないこずに泚意しおください。


残りのケヌスに぀いおは、2段階で解決したす最初に、行01および10の条件を満たす最小文字列を収集し、最初のれロがa -1れロに達した埌、および最初に満たされたナニットd -1ナニットに远加したす。 明らかに、このようなアクションによる01ず10の状態は悪化したせん。

タスクB.列車ずトンネル


条件

制限時間2秒
256 MBのメモリ制限

Petyaは旅行に行くこずにしたした。 今、圌は電車に乗っおいたす。 列車はn台の車で構成され、 i番目の車の長さはiメヌトルです。 車間の距離は無芖できたす。

Petyaは、䞀郚の車にラむトが点灯しおいるこずに気付きたした。 列車はhメヌトルの長さの鉄道トンネルに近づいおいたす。 Petyaは、トンネル内のある時点で、ラむトがオフになっおいる車だけを望んでいたせん。 すべおの車の䞭で、トンネル内にある長さがれロでない特定のセクションで、光が点灯しない堎合、Petyaは時間の暗い瞬間を呌び出したす。 そのような瞬間の出珟を排陀するために、Petyaは䞀郚の車のラむトをオンにしたいず考えおいたす。

トンネルの通過䞭に暗闇が䞀瞬もないように、Petyaが最小台数の車のラむトをオンにするのを助けおください。

入力フォヌマット

入力には、いく぀かのテストケヌスが含たれたす。 最初の行には1぀の数倀t 1≀t≀100-テストの数が含たれおいたす。 以䞋はテストの説明です。

各テストは次のように定矩されたす。最初の行には2぀の正の敎数n 、 h 1≀n≀10 5、1≀h≀10 9 が含たれたす-列車内の車の数ずメヌトル単䜍のトンネルの長さ。 テストの次の行には、 n個の自然数a i 1≀a i≀10 9 -車の長さメヌトルが含たれおいたす。 次の行にはn個の数倀が含たれたす。i番目の車でラむトが最初にオンになっおいる堎合、 i番目は1です。それ以倖の堎合は0です。 車は列車の先頭から末尟たでリストされおいたす。

すべおのテストのn倀の合蚈は10 6を超えたせん。

出力圢匏

テストケヌスごずに、1぀の数字を印刷したす。これは、ラむトをオンにする車の最小数です。

䟋

入力デヌタ
2
7 10
5 3 4 5 9 9 9
1 0 0 0 1 0 0
5 2
1 2 3 1 1
1 1 0 1 1

むンプリント
2
1

解決策

電車党䜓を光のない車のセグメントに分割したす。 そのような車の各グルヌプを通過し、車の党長がh以䞊になる車でラむトを点灯したす。 明らかに、この戊略は最も少ない結果をもたらしたす。 たた、最初の車ず最埌の車のラむトを必ずオンにする必芁がありたす。トンネルに入るずきずトンネルを出るずき、これらの車は暗い時間を圢成したす。

問題C.矎しいパヌティション


条件

制限時間2秒
256 MBのメモリ制限

今日、数孊の授業で孊校で、ピヌトは倚くの耇数の数字の最倧公玄数に぀いお話されたした。 圌はこのトピックをずおも気に入ったので、すべおのタスクでそれを探し始めたした。

そのため、コンピュヌタヌサむ゚ンスのレッスンで、教垫はボヌド䞊に敎数の配列を曞きたした。ペティアはすぐに、圌の芁玠が2぀のセットM 1ずM 2に分割され、 gcdM 1 ずgcdM 2 が非垞に倧きくなるこずに気付きたした。 ここで、 gcdMMは空でない数のセットは、 Mのすべおの数の最倧公玄数を意味したす。

Petyaは問題を䞀般化するこずを決定したしたこの数の配列に察しお、圌は、 mingcdM 1  、 gcdM 2 が可胜な限り倧きくなるように、 2぀の空でないセットM 1およびM 2に芁玠のパヌティションを芋぀けたいず考えおいたす。 このタスクで圌を助けおください。

入力フォヌマット

入力には、いく぀かのテストスむヌトが含たれたす。 最初の行には、テスト数t 1≀t≀1000が含たれおいたす。
各テストの説明は次のずおりです。テストの説明の最初の行には、数n 2≀n≀5•10 4 -配列内の芁玠の数が含たれたす。 次の行には、 n個の数倀a i 1≀a i≀10 9 -配列のelement1が含たれたす。

同じ入力デヌタのすべおのテストでのn倀の合蚈は、5•10 4を超えたせん。

出力圢匏

テストケヌスごずに、個別の行に回答を出力したす。可胜な最倧倀はmingcdM 1  、 gcdM 2 です。

䟋

入力デヌタ
3
5
3 2 4 6 9
3
3 5 14
4
6 4 6 6

むンプリント
2
1
4

解決策

配列の最初の芁玠は、 M 1たたはM 2にありたす。 䞀般性を倱うこずなく、 M 1に含たれるず仮定したす。 次に、 [1]はgcdM 1 で陀算されたす。぀たり、 gcdM 1 は[1]の玄数です。

すべおの玄数a [1]を゜ヌトしたす10 9たでの数の堎合、それらの数は1344以䞋です。 珟圚の陀数dを考慮するず、 M 1で dで割り切れる配列のすべおの芁玠を取埗したすこのgcdM 1 はd未満にならず、 M 2の芁玠が少ないほど、 gcdM 2 が倚くなりたす。 M 2の他のすべおの芁玠ず倀mingcdM 1  、 gcdM 2 で回答を曎新したす。 この堎合gcdが無限に等しいこずを考慮するず、 M 2が空になるずいう事実を無芖できるこずに泚意しおください。この堎合のすべおの芁玠はdで割り切れるため、 gcdM 2 は少なくずもdになりたす。

解の挞近的挙動はOsqrta [1]+ da [1]• n です。ここで、 da [1]≀1344です。

タスクD.タスクの準備


条件

制限時間2秒
256 MBのメモリ制限

アンドリュヌは、遞手暩に向けお準備する必芁のあるn個のタスクを考え出したした。 各タスクiに぀いお、開発に必芁な時間t iを掚定したした。 アンドレむは友人を招埅しお準備を手䌝っおもらいたいず考えおいたす。

圌はただ䜕人の友人が圌を助けるかを正確に知りたせんが、圌のアシスタントに仕事を公平に分配したいず考えおいたす。 したがっお、各タスクに぀いお、圌はそのような敎数x iを決定しお、各友人がその準備にちょうどx i分費やしたいず考えおいたす。 アンドレむは、すべおの友達が準備に少なくずもt i分を費やすず、タスクiは高品質になるず信じおいたす。

Andreiは、タスクをうたく開発するのにかかる時間を誀っお掚定したこずに気付き、 t iを1 ず぀増やしたり枛らしたりするこずがありたす。

タスクt iを準備するための初期時間の芋積もりが䞎えられたす。 m個のリク゚ストを凊理する必芁がありたす。 各リク゚ストの説明は次のずおりです。


入力フォヌマット

最初の行には、2぀の敎数nずm 1≀n、m≀10 5 -タスクの数ずク゚リの数が含たれおいたす。

次の行には、 n個の敎数t i 1≀t i≀5•10 5 -Andreiの初期評䟡に埓っおi番目のタスクを準備するのにかかる時間が含たれおいたす。

次のm行がプロンプトに埓いたす。 それらはそれぞれ2぀の数字で蚘述され、最初の数字はそのタむプです。 タむプ1たたは2の堎合、2番目の数倀i 1≀i≀nはタスク番号です。 タむプ3の堎合、2番目の数倀k 1≀k≀5•10 5 は、Andreyを支揎する友人の数です。

t iは垞に1〜5•10 5の範囲にあるこずが保蚌されおいたす。

出力圢匏

3番目のタむプのク゚リごずに1぀の数字を印刷したす。これは、1人のタスクを準備するのに必芁な合蚈時間です。

䟋

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

むンプリント
15
9
7
16
9
7
15
8
7

解決策

そもそも、時間を倉曎するリク゚ストがなければ、問題を解決したす。 配列t iから、新しい配列cnt j を生成したす。この配列には、 j分を費やす必芁があるタスクの数を栌玍し、そのプレフィックス量の配列を蚈算したす。 次に、各友人がk人しかいない堎合に費やす時間は、 OMAX / kずしおカりントできたす。MAXは、タスクに必芁な最倧時間です1、2、... MAX / k分かかるタスクを遞別するだけです 。 ご存知のように、1からMAXたでのすべおのkに察するこのようなアルゎリズムの合蚈動䜜時間はOMAXlogMAXです。

次に、タスクに必芁な時間がtからt + 1に倉化したずきに䜕が起こるかを芋おみたしょう。答えは、 tの玄数であるkに぀いおのみ倉化したす。 最倧5•10 5たでの数の陀数の最倧数は200であるため、それらの数に比䟋しお時間の経過ずずもに単玔に陀数し、それらの解のみを曎新できたす。

同様に、時間がtからt -1に倉わるず、 t -1の玄数である数倀の答えが倉わりたす。

問題E.関連するメトロ


条件

制限時間3秒
256 MBのメモリ制限

Vasyaは、倚くの堎合、さたざたな郜垂で開催される囜際的なプログラミングコンテストに参加したす。 ベむトランドに到着し、地䞋鉄の地図を芋るず、圌はどこかで信じられないほど䌌たものを芋おいるこずに気付きたした。 圌は慎重に考えた埌、Baytlandの地䞋鉄がBaytoviaの地䞋鉄に非垞に䌌おいるこずに気付きたした。 どちらの郜垂でも、圓然のこずながら、地䞋鉄のトンネルが朚を圢成しおいたす。2぀の駅の間をトンネルに沿っお䞡方向に移動できたす。

䞡方の郜垂のメトロマップが本圓に䌌おいるこずをPetyaの友人に蚌明するために、Vasyaは圌に、Baytlandのk駅a iのコヒヌレントセットずBytoviaのk駅b iの察応するセットを芋せたいです。 Baytlandのa jは、Baytoviaのステヌションb iずb jの間にトンネルがある堎合にのみトンネルがありたす。 䞀連のステヌションは、このセットの任意のステヌションから他の任意のステヌションに到達でき、このセットのステヌションのみを移動できる堎合、接続枈みず呌ばれたす。

Vasyaがステヌションの数で接続されたステヌションの最倧のペアを芋぀けるのに圹立ちたす。

入力フォヌマット

最初の行には、単䞀の敎数n 1≀n≀50-ベむトランドの地䞋鉄駅の数が含たれおいたす。

次のn -1行は、番号u i 、 v i 1≀u i 、 v i≀nのペア-トンネルがあるBaytlandの駅の数を瀺したす。 ステヌションのペア間には、正確に1぀の単玔なパスがあるこずが保蚌されおいたす。

次の行には、単䞀の敎数m 1≀m≀50-ビトビアの地䞋鉄駅の数が含たれおいたす。

次のm -1行は、番号u i 、 v i 1≀u i 、 v i≀mのペアを䞎えたす-ビトビアの駅の数で、その間にトンネルがありたす。 ステヌションのペア間には、正確に1぀の単玔なパスがあるこずが保蚌されおいたす。

出力圢匏

単䞀の敎数k-䌌たようなステヌションのペアの最倧サむズを出力したす。

䟋

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

むンプリント
3

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

むンプリント
4

解決策

このタスクでは、これらのツリヌの互いに同圢の連結ツリヌサブツリヌの最倧のペアを芋぀ける必芁がありたした。 この問題を動的蚈画法で解決したす。

最初のツリヌの䞀察の有向゚ッゞ u 1 、 v 1 および2番目のツリヌの u 2 、 v 2 に぀いお、同型の最倧のペアのサむズに等しい倀dp [ u 1 ] [ v 1 ] [ u 2 ] [ v 2 ]を蚈算したす頂点u 1が頂点u 2に移動し、頂点v 1およびv 2が遞択されたサブツリヌに必ずしも含たれない堎合、サブツリヌ。 さらに、v iをダミヌの頂点-1ず等しくしたす。これは、リモヌトサブツリヌv iがないこずを意味し、共通サブツリヌのすべおの頂点を䜿甚できたす。 そのような量を蚈算する堎合、答えは、量dp [ u 1 ] [-1] [ u 2 ] [-1]の頂点u 1 、 u 2のすべおのペアの最倧倀になりたす。

dp [ u 1 ] [ v 1 ] [ u 2 ] [ v 2 ]を蚈算するには、䜕らかの方法でサブツリヌu 1ずu 2を互いに䞀臎させる必芁がありたす。 e 1がv 1以倖の頂点u 1の息子である堎合、 v 1でツリヌをぶら䞋げたずき、サブツリヌe 1には、サブツリヌu 1よりも少ない頂点が含たれるこずに泚意しおください。 頂点u 1の息子e 1および頂点u 2の e 2に぀いお、垰玍法の仮定により、すでにdp [ e 1 ] [ u 1 ] [ e 2 ] [ u 2 ]を蚈算しおいるので、目的のサブツリヌにいく぀の頂点を远加できるかがわかりたす。その頂点e 1がe 2に察応する堎合。 頂点u 1に k個の息子があり、 u 2に m個の息子がある堎合、サむズk•mの行列a i、jを取埗したす。ここで 、各列および各行に最倧合蚈を持぀耇数のセルを遞択する必芁がありたす遞択されるセルは1぀だけです。 これは、ハンガリヌのアルゎリズムによっお解決される暙準の割り圓お問題です。

゜リュヌションの総耇雑さはOn 5 であり、2぀のツリヌの゚ッゞのペアを遞択するn 2の方法であり、 On 3 はハンガリヌ語アルゎリズムの時間です。 最適化のために、同じ同圢のペアに耇数回ツリヌを割り圓おる問題を解決するこずはできたせんが、答えを芚えおおいおください。

* * *

チャンピオンシップぞの参加申請を提出しおいない堎合でも、ただ時間はありたす 5月29日たでロシアコヌドカップの Webサむトに登録しお、2回目の予遞ラりンドに参加しおください。

ロシアコヌドカップチャンピオンシップは、ロシアのIT産業の発展を目的ずしたMail.Ruグルヌプの取り組みの1぀であり、IT.Mail.Ruリ゜ヌスによっお統合されおいたす。 IT.Mail.Ruプラットフォヌムは 、ITに興味があり、この分野で専門的に開発しようず努力しおいる人々のために䜜成されたした。 このプロゞェクトは、テクノパヌクMSTUでの教育プロゞェクトであるロシアAiカップ、ロシアコヌドカップ、ロシアデベロッパヌズカップの遞手暩を組み合わせたものです。 バりマン、モスクワ州立倧孊テクノスフィア M.V. MIPTのロモノ゜フずテクノトレック。 さらに、IT.Mail.Ruでは、テストを䜿甚しお、人気のあるプログラミング蚀語の知識をテストしたり、ITの䞖界から重芁なニュヌスを孊習したり、ITトピックに関する関連むベントや講矩の攟送を芋たり芋たりできたす。

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


All Articles