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





プログラマヌの囜際倧䌚であるロシアコヌドカップ2016の次の予遞ラりンドが終わりたした 。 そしお、確立された䌝統に埓っお、最埌のラりンドで出堎者に提䟛された問題の解決策を知るこずを勧めたす。 今回は6぀のタスクがありたしたが、それらを解決するためにただ2時間が割り圓おられおいたした。 604人が次のラりンドのために戊った 。 RCCは、英語を話す参加者を含む初めお開催されたす。 結果はすぐに珟れたした-ロシア語を話すプログラマヌは深刻な競争に盎面するでしょう。 50人が決勝戊に進み、そのうち19人はロシア語圏の参加者ではありたせん。 ファむナリストの䞭には、ロシア、りクラむナ、ベラルヌシ、リトアニア、スロバキア、アルメニア、ポヌランド、スむス、フィンランド、日本、䞭囜、韓囜の代衚者がいたす。



  1. テスト䜜業
  2. ダスデ
  3. 二分朚
  4. 詊隓管ず詊薬
  5. 䞡替
  6. タスクf


タスクA.è©Šéš“



状態



制限時間 2秒

256 MBのメモリ制限



すぐに、コリダは重芁なコントロヌルを䜜成する必芁があるため、慎重に準備するこずにしたした。 圌は、コントロヌルにn個のオプションがあり、そのうちi番目が1からm iたでの番号が付けられたm i個のタスクで構成されるこずを発芋したした。 各オプションのタスクごずに、Kolyaは時間t ij分を掚定したした。



制埡䞭、圌はタスクをバヌゞョン内にある順序で厳密に解決するこずを蚈画しおいたす。 䜜業はt分間続くコントロヌルの終了たでに匕き枡さなければなりたせん。 もちろん、Kolyaはコントロヌルを無効にするこずもできたすが、圌はこれがあたり正確ではないず考えおいたす。 したがっお、私はたった1぀のタスクを片付ける準備ができおいたす。 圌は、 t 0分を割り圓おの取り消しに費やしたす。



今、圌はこのすべおの情報を知っおおり、このオプションに出くわした堎合に解決する時間があるタスクの数を各オプションごずに芋぀けたいず考えおいたす。



入力圢匏



最初の行には、3぀の敎数n 、 t 、およびt 0 1≀n≀100、1≀t≀10000、1≀t 0≀100が含たれおいたす-オプションの数、コントロヌルの期間、およびKolyaがタスクの曞き蟌みに費やす時間です。



次のn行には、オプションの説明が含たれおいたす。 最初の数m i 1≀m i≀100は、オプションiのゞョブの数です。 次のm iはt ijに番号を付けたす1≀t ij≀100-Kolyaがi番目のオプションのj番目のタスクの解決に費やす時間。



出力圢匏



各オプションに぀いお、1行の敎数-Kolyaがこのオプションに遭遇した堎合に解決する時間があるタスクの数を新しい行に出力したす。



䟋



入力デヌタ

4 45 5

5 10 10 10 10 10

4 30 10 10 10

3 40 40 5

1,100



むンプリント

5

4

2

1



解決策



Kolyaが解決するタスクのプレフィックスに぀いお説明したす。 すべおのタスクを自分で解決する堎合に費やす時間ず、この堎合の1぀のタスクに費やす最倧時間を芋぀けたす。 圌が償华する堎合、圌が行うものの䞭で最も長いタスクを償华する必芁があるこずは明らかです。 そしお、コリダが費やす時間はS -max0、 M - t 0 です。 ここで、今回がtを超えない最倧のプレフィックスを芋぀けたす。



問題B.ダスデ



状態



制限時間 2秒

256 MBのメモリ制限



子䟛の頃、小さなダスデが少幎フィリず䞀緒に家に䜏んでいたした。 合蚈で、ダスデには脚がn本あり、そのうちのいく぀かは右足で、䞀郚は巊足でした。 毎日、ダスデは足の䞀郚のみを䜿甚したしたが、垞に少なくずも1本の巊足ず少なくずも1本の右足を䜿甚しおいたした。



毎日、フィルはノヌトに2぀の数字を曞き留めたした。その日にダスデが䜿甚した巊足ず右足の数です。



フィリアは、メモからムカデの巊足の数ず右足の数を理解したいず考えおいたす。 残念ながら、フィルは完璧ではなく、いく぀かの゚ントリで間違いを犯した可胜性がありたす。 Filyaは、ダスデに少なくずもl iの巊脚ず少なくずもr iの右脚がある堎合、゚ントリl i 、 r iが正しいず芋なしたす。



可胜な限り倚くの゚ントリが正しいように、䜕本のムカデが巊足ず右足を持っおいる可胜性があるかを圌に理解させおください。



入力圢匏



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

各テストの説明は次のずおりです。テストの説明の最初の行には数字n 2≀n≀10 9 -ダスデの足の合蚈数が含たれ、2番目の行には数字m 1≀m≀10 5 -レコヌドの数が含たれたす。



次のm行には、2぀の数倀l iおよびr i  1≀l i 、 r i≀n-フィリの蚘録によるず、それぞれi日目にダスデが䜿甚する巊右の足の数が含たれたす。



すべおのテストのレコヌドの総数は10 5を超えたせん。



出力圢匏



テストごずに、別々の行に、その答え-ダスデの巊右の足の数を印刷したす。これにより、可胜な限り倚くのレコヌドが正しいこずがわかりたす。



䟋



入力デヌタ

3

4

3

1 2

1 3

1 4

2

2

2 2

1 2

5

4

1 4

2 3

3 2

4 1



むンプリント

1 3

1 1

1 4



解決策



この問題を解決するには、すべおのレコヌドを巊脚の数で䞊べ替えたす。 次に、巊脚の数を昇順で䞊べ替えたす。 巊脚がl iの堎合、最初のi゚ントリは朜圚的にtrueになり、埌続の゚ントリはすべお正しくない可胜性がありたす l iに等しい脚の数を陀く。



次に、最初のiからいく぀のレコヌドが正しいかを調べる必芁がありたす。 r j≀n-l iの堎合、数倀j≀iのレコヌドは真です。 このようなr jをすべお芋぀けるこずは暙準的なタスクであり、たずえばセグメントのツリヌによっお解決されたす。



たた、答えの数倀の合蚈がnに等しくなるように泚意し、すべおの゚ントリが正しくない堎合を正しく凊理する必芁がありたした。



問題C.バむナリツリヌ



状態



4秒の制限時間

256 MBのメモリ制限



Vasyaの堎合、生埒は完党な二分朚を成長させる必芁があり、そのすべおの葉の根たでの距離は同じです。



䞭断されたツリヌは、頂点の1぀がルヌトであるサむクルのない接続された無向グラフであるこずを思い出しおください。 頂点の芪は、ルヌトに最も近い隣接ノヌドであり、ルヌトには芪がありたせん。 ピヌクの残りの隣人は圌女の息子ず呌ばれたす。 息子のいない山頂は葉ず呌ばれたす。 完党な二分朚ずは、各頂点が葉ではなく、ちょうど2人の息子を持぀䞭断ツリヌです。



残念ながら、孊期䞭、Vasyaはプログラミング競技に倚くの時間を費やし、ツリヌの成長を実際に監芖したせんでした。 テストの数日前に、Vasyaは自分が朚を育おたこずに気付きたしたが、おそらくそれは間違っおいお、根さえ持っおいたせんでした。 Vasya自身は、ツリヌのルヌトによっおツリヌの任意の頂点を遞択し、頂点を远加するこずにより、そこから必芁な完党なバむナリツリヌを取埗しようずしたす。 ある日、Vasyaはツリヌに新しいピヌクを远加し、既存のピヌクの1぀の息子にするこずができたす。



Vasyaは、タスクを完了するこずができるかどうか、ルヌトを遞択する必芁がある頂点、およびタスクに費やす最小日数を調べたいず考えおいたす。 ルヌトによっお遞択可胜な頂点がいく぀かあり、完党なバむナリツリヌを取埗できる堎合、そのすべおの葉は最短日数でルヌトたでの距離が同じであるため、最小数の頂点が必芁です。



必芁な日数を衚瀺するずき、Vasyaはこの数を10 9 + 7で割った残りだけを芋たいず思っおいたす。Vasyaは、残りの分ではなく、ツリヌの圢成を完了するこずができる日数を最小限にしなければならないこずに泚意しおください10 9 + 7では、残りは撀退の盎前に服甚しなければなりたせん。



入力圢匏



入力には、いく぀かのテストスむヌトが含たれたす。 最初の行には、テストの数tが含たれおいたす。



次のtテストのそれぞれは、次のように説明されたす。テストの説明の最初の行には、単䞀の敎数n 2≀n≀2•10 5 -ツリヌ内の頂点の数が含たれたす。 テスト蚘述の次のn -1行は、数倀のペアu i 、 v i  1≀u i 、 v i≀n -i番目の゚ッゞで接続された頂点の数を䞎えたす。 リブがツリヌを圢成するこずが保蚌されたす。



すべおのテストでの数倀nの合蚈が2•10 5を超えないこずが保蚌されおいたす。



出力圢匏



各テストの回答を個別の行に印刷したす。



頂点をルヌトずしお遞択できず、その埌、䞀定の日数埌に完党なバむナリツリヌが埗られ、そのすべおの葉がルヌトたでの距離が同じ堎合、-1を出力したす。



それ以倖の堎合は、2぀の敎数を印刷したす-ルヌトずしお遞択する頂点の数ず、Vasyaが必芁ずする日数を10 9 + 7で割った䜙りです。最短時間でタスクを完了できる頂点が耇数ある堎合は、最小数で頂点を印刷したす。



䟋



入力デヌタ

3

3

1 3

3 2

4

4 2

3 2

3 1

5

1 2

1 3

1 4

1 5



むンプリント

3 0

2 3

-1



解決策



Vasyaが費やす必芁のある日数を最小化するには、結果のバむナリツリヌの高さを最小化する必芁がありたす-最終ツリヌのリヌフの深さがhの堎合、Vasyaは必芁な頂点数を䞀時停止するために2 h -1- n日を費やしたす。



ツリヌ内に3を超える次数の頂点がある堎合、タスクを完了できないこずに泚意しおください。完党なバむナリツリヌでは、すべおの頂点に3぀以䞋の近傍しかありたせん。 答えのルヌトには正確に2人の息子がいるこずに泚意しおください。



したがっお、問題を解決するには、ルヌト次数が2以䞋の頂点を敎理し、それから他のすべおたでの距離の最倧倀が最小になるように頂点を遞択する必芁がありたす。 これは、結果のツリヌの高さになりたす。



タスクD.詊隓管ず詊薬



状態



制限時間 2秒

256 MBのメモリ制限



今日、化孊の先生はペティアに非垞に重芁な仕事を䞎えたした-詊隓管に詊薬を入れるこず。 圌は、 n本のチュヌブずm個の詊薬を䞎えられたした。 各チュヌブに぀いお、 min iおよびmax iが既知です-それぞれに入れるこずができるミリリットル単䜍の液䜓の最小および最倧総量、ならびに詊薬番号c iおよび番号p iです。 各詊薬に぀いお、数v iも知られおいたす-プチには䜕ミリリットルありたすか。 教垫は、Petyaにすべおの詊薬を泚いで、 i番目の詊隓管内のすべおの液䜓の少なくずもp iパヌセントが詊薬c iで占められ、各詊隓管でmin iおよびmax iの制限を満たすように芁求したす。 すべおの詊薬を完党にこがす必芁がありたす。 化孊反応や詊薬量の倉化は発生しないず想定しおいたす。



Petyaが教垫のタスクを完了するのを手䌝うか、圌がどのようにしようずしおも、圌はそれをできないず蚀う。



たずえば、䟋の最初のテストケヌスでは、次の答えが機胜したす。





この堎合、 min iおよびmax iのすべおの制限、および詊隓管内の詊薬の割合の制限が満たされたす。最初の詊隓管では3/5 =最初の詊薬の60、2番目の詊隓管では4/5 = 3番目の詊薬の80 in vitro 3/4 = 75≥4番目の詊薬の70。 たた、すべおの詊薬が完党にこがれおいるため、教垫から䞎えられたすべおの芁件が満たされ、答えは正しいです。



入力圢匏



入力には、いく぀かのテストスむヌトが含たれたす。 最初の行には、テストの数t 1≀t≀100が含たれおいたす。



次のtテストのそれぞれは、次のように説明されおいたす。テストの説明の最初の行には、それぞれ2぀の数倀n 、 m 1≀n、m≀10 5 -チュヌブず詊薬の数が含たれたす。



次のn行のi番目には、4぀の敎数min i 、 max i 、 c i 、 p i  1≀min i≀max i≀10 5、1≀c i≀m、1≀p i≀100が含たれたす。 i番目のチュヌブに泚ぐこずができる液䜓のミリリットルの最小および最倧総数、それぞれチュヌブ内の詊薬数およびその最小割合。



テストの説明の最埌の行には、 m個の敎数v i 1≀v i≀10 5 -Petyaのi番目の詊薬のミリリットル数が含たれおいたす。



すべおのテストでnの合蚈ずmの合蚈が10 5を超えないこずが保蚌されおいたす。



出力圢匏



各テストに぀いお、その答えを印刷したす。



答えが存圚する堎合、最初の行にYESを印刷し、次のn行のi番目に最初に番号k - i番目の詊隓管内の異なる詊薬の数、次にk組の正の数id 、 v-詊隓管内の詊薬の数ずその量を印刷したす。 耇数の回答がある堎合は、どれでも印刷できたす。



テストぞの回答が存圚しない堎合は、1行にNOを出力したす。



問題に蚘茉されおいるすべおの条件が満たされ、盞察誀差たたは絶察誀差が10 -6を超えない堎合、答えは正しいずみなされたす。



䟋



入力デヌタ

2

3 4

5 8 1 60

4 6 3 80

3 4 4 70

3 4 4 3

3 4

6 8 1 60

4 6 3 80

3 4 4 70

3 4 4 3



むンプリント

はい

2 1 3.0000000000 2 2.0000000000

2 2 1.0000000000 3 4.0000000000

2 2 1.0000000000 4 3.0000000000

いや



解決策



いく぀かの段階で建蚭的なアルゎリズムを提瀺したす。





これらのアクションの埌、詊薬のチュヌブぞの分離は、垞に問題のすべおの条件を満たしたす。

最埌に、この問題では、正確性に問題がある可胜性があるこずに泚意しおください。 sense審員のテストはこの意味で非垞に人道的に構築されたしたが、ラりンド埌、Pyotr Mitrichev予遞ラりンドでの勝利を祝犏したすは、粟床の倧幅な䜎䞋が発生するテストを瀺したした。 将来的には、実数の問題における正確性の埮劙さを回避しようずしたす。



タスクE.䞡替



状態



4秒の制限時間

256 MBのメモリ制限



圌の長幎にわたっお、ボルダはn個のコむンのコレクションを組み立おおきたした。 圌はこれらのコむンをすべお䞀列に䞊べたした。 この堎合、行のi番目のコむンの額面額はa iです。



ボルダは別の旅行に出かけたすが、トレヌニングキャンプの時間はほずんどありたせん。 そのため、圌はコむンの䞀郚を䞀列に䞊べたいず思っおおり、コむンが十分にあるこずを望んでいたす。



Boryaはいく぀かの質問に答えたいず思っおいたす。 Boryaは、各芁求で、 i番目からr番目たでのすべおのコむンを受け取った堎合に、倉曎せずに支払うこずができない最䜎金額を知りたいず考えおいたす。 より正匏には、圌はl iからr iたでの数のコむンのサブセットを遞択するこずが䞍可胜な最小の正の敎数zを芋぀けたいず考えおいたす。



入力圢匏



最初の行には、2぀の敎数nおよびm 1≀n、m≀150 000-Boriが持っおいるコむンの数ずリク゚ストの数が含たれおいたす。 次の行にはn個の数字a i 1≀a i≀10 9  -i番目のコむンの名目倀が含たれおいたす。



次のm行には、2぀の数倀l iおよびr i 1≀l i≀r i≀n -ク゚リの説明が含たれたす。



出力圢匏



m個のリク゚ストのそれぞれに぀いお、 l i番目からr i番目たでのコむンを䜿甚しお、倉曎なしで支払うこずのできない最小額を印刷したす。



䟋



入力デヌタ

5 5

2 1 5 3 1

1 5

1 3

1 1

2 4

2 5



むンプリント

13

4

1

2

11



解決策



コむンの特定のセットで䞎えるこずができない最小の金額を芋぀ける方法を怜蚎しおください。 繰り返し答えを芋぀けたす。 最初は、金額がれロであるずしか想像できず、コむンを䜿甚したせんでした。



次のステップで、倀がXを超えないすべおのコむンを調べ、 Yたでの金額を支払うこずができるずしたす。 それぞれがXを超えるがY + 1を超えないコストのコむンの合蚈倀を合蚈に等しくしたす。 合蚈= 0の堎合、 Y + 1の堎合、このセットの䜿甚は想像できたせん。 それ以倖の堎合は、倀がY + 1以䞋のすべおのコむンが考慮されるずいう条件に移りたしょう。Y + sumたでの金額を想像できたす。



調べた最倧コむンの倀は、少なくずもフィボナッチ数ず同じくらい速く成長するこずに泚意しおください。 したがっお、このプロセスはOlog Answerの繰り返しで終了したす。



元の問題を解決するには、セグメント䞊のXより小さい数の合蚈を芋぀ける方法を孊ぶ必芁がありたす。 Olog nでこれを行うず、 Om log n log Answerで合蚈で問題を解決できたす 。



このタスクは暙準です。 線圢のメモリ量を必芁ずする方法を怜蚎しおください。 これを行うには、元の配列内のすべおの数倀を䞊べ替え、すべおの芁求に䞊行しお応答したす。 次の反埩では、各リク゚ストに぀いお、珟圚受け取るこずができる最倧金額がわかりたす。 すべおのリク゚ストを゜ヌトしたす。 次に、元の配列の番号を昇順でフェンりィックツリヌに远加し、次の芁求に適切なタむミングで境界線を曎新したす。



タスクf



状態



5秒の制限時間

256 MBのメモリ制限



Gnome PashaはGnome Math Cupの予遞ラりンドを曞きたす。 問題Fずしお以䞋が提案されおいたす。



n個の自然数a 1 、 a 2 、...、 a nおよび自然数dが䞎えられた堎合、 a 1 x 1 + aであるような非れロ敎数x 1 、 x 2 、...、 x nのセットを芋぀ける必芁がありたす。 2 x 2 + ... + a n x n = d ノヌムの乗算ず加算は䞍十分であるため、すべおの数倀d 、 a iは10 6を超えず、数倀x iは-10 6〜10 6でなければなりたせんが、0に等しくない必芁がありたす。



Pashaが問題の条件を満たす少なくずも1぀のセットx iを芋぀けるのを手䌝うか、䞻催者が貧匱なテストを行い、答えがないこずを圌に知らせたす。



入力圢匏





入力の最初の行には、テストの数であるtが含たれおいたす。 各テストは2行で䞎えられたす。 最初の行には2぀の数倀nずdが含たれおいたす1≀n≀10 5、1≀d≀10 6 。 2行目には、 n個の数倀a i 1≀a i≀10 6 が含たれたす。 すべおのテストのnの合蚈は10 5を超えたせん。



出力圢匏



各テストの回答を印刷したす。 必芁なセットx iが存圚する堎合、1行目にYESを印刷し、2行目に適切なセットを印刷したす。 それ以倖の堎合は、テストプリントぞの回答の1行でNO。



䟋



入力デヌタ

2

2 1

2 3

3 3

2 3 1000



むンプリント

はい

2 -1

はい

503 -1 -1



解決策



答えNOは、 dがすべおの数a iの最倧陀数で割り切れない堎合の1぀の堎合のみです。 それ以倖の堎合、答えは垞に存圚したす。 たず、すべおのa iずdをgcd a 1 、...、 a n で陀算した埌、倀を制限せずに少なくずもいく぀かの答えを埗る方法を孊びたす。 n = 1の堎合、 x 1 = d / a 1です。 他の堎合、各接頭蟞[1、 p ]に察しおx i、pを遞択し、 a 1 x 1、p + ... + a p x p、p = gcd a 1 、...、 a p  これは垰玍法によっお行われたす。 x 1、1 =1。すでにx i、pを芋぀け、 x i、p + 1を芋぀けたいずしたす。拡匵ナヌクリッドアルゎリズムを䜿甚しお、 sずtを芋぀けたす。s•gcd a 1 、...、 a p  + t • a p + 1 = gcdgcd a 1 、...、 a p 、 a p + 1 = gcd a 1 、...、 a p + 1 。 次に、 i≀p x iの堎合、p + 1 = s x i、pおよびx p + 1、p + 1 = tです。 x i、nを受け取ったら、 x i = d / gcd a 1 、...、 a n  x i、n = dx i、nを蚈算したす。 この゜リュヌションはOn 2 で機胜したすが、制限に適合したせん。 䜜業時間を短瞮するために、最倧共通因子がセット党䜓ず同じであり、削枛できないようなサブセットをiから遞択したす。 これを行うために、異なる玠数の数を枛らす堎合、 1からnたで反埩し、サブセット内の数を取りたす。 したがっお、10 6以䞋の数の玠数の最倧数は7であるため、遞択したサブセットには7個以䞋の芁玠が含たれたす。サブセットの数に぀いおは、説明したアルゎリズムを実行し、セットに含たれおいない数に぀いおは、単にxを蚭定したすi = 0。



珟圚、アルゎリズムはOnに察しお機胜したすが、 x iモゞュロが10 6を超えないずいう条件は満たされず、それらの間にれロがあっおはなりたせん。 これを行うために、正芏化手順を説明したす。 たず、 x iの最初の条件を満たしたす。 たず、 i > 1のすべおのx iを非負でa 1未満にしたす。 これは、同等の倉曎の単玔な操䜜によっお行われたす。x1 ka iから枛算し、 x i ka 1に远加したす。ここで、 k = x i mod a 1 - x i / a 1です。 x 1モゞュロは|を超えるこずができないため、挔算の結果は64ビットデヌタ型に適合するこずに泚意しおください。 d-a 2 x 2 -...- a n x n | <10 6 •10 6 •10 5 。 ここで、2番目から最埌たですべおのx iを調べ 、それぞれで操䜜を順番に実行したす x iから1を匕き、 x 1に a iを远加したす。 x 1 、...、 x iに操䜜を適甚した埌、0≥x 1≥–10 6になる iが存圚するこずに泚意しおください。 そのようなiが存圚しないずするず、すべおのx iは負になり、これは起こり埗たせん。a1 x 1 + ... a n x nはd 、぀たり正の数を䞎えるからです。 取埗方法を孊んだ埌| x i | ≀10 6の堎合、それらをれロ以倖のたたにしたす。 おそらく1぀を陀くすべおのれロをペアに分割したす。 各ペアiずjで 、 x i = a jずx j = –a iを割り圓おたす。 x p = 0のむンデックスpのみが残っおいる堎合がありたす。いく぀かのケヌスを怜蚎したす。





番号が64ビットのデヌタ型に適合するように、最初の段萜で説明したアルゎリズムの各プレフィックスに察しお正芏化操䜜を実行する必芁があるこずに泚意しおください。 詳现に぀いおは、テストで掲瀺されるju審決定コヌドを参照できたす。



***

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



All Articles