Codeforces Round #704 (Div. 2) 問題文和訳
- A. Three swimmers / Три пловца (500点)
- B. Card Deck / Колода карт (1000点)
- C. Maximum width / Максимальная ширина (1500点)
- D. Genius's Gambit / Ход гения (2250点)
- E. Almost Fault-Tolerant Database / Почти отказоустойчивая база данных (3000点)
A. Three swimmers / Три пловца (500点)
テストごとのメモリ制限: 512 MB
入力: 標準入力
出力: 標準出力
1人目の水泳選手がプールを往復するのにちょうど 分かかり、2人目の水泳選手は 分、3人目の水泳選手は 分かかります。したがって、1人目はスタートしてから 分後に、2人目は 分後、3人目は 分後にプールの左側にいることになります。
彼らが泳ぎ始めてからちょうど 分後にプールの左側にあなたが来ました。水泳選手のうち1人がプールの左側に着くまでに何分待つ必要があるか求めてください。
入力
1行目には単一の整数 が与えられる、 はテストケースの個数である。つづく 行にはテストケースについての記述が、1行につき1つずつ与えられる。
各行には4つの整数 が与えられる、これらの整数はそれぞれ、3人が泳ぎ始めてからあなたが来るまでの時間を分単位にしたものと3人の水泳選手がプールを泳いで戻ってくるのにかかる時間を分単位にしたものである。
出力
各テストケースについて、1つの整数を出力せよ、その整数とは水泳選手のうち1人がプールの左側に着くまでに待つ必要がある時間(分単位)である。
入出力例
4 9 5 4 8 2 6 10 9 10 2 5 10 10 9 9 9
1 4 0 8
注記
1つ目のテストケースでは、1人目の水泳選手は開始時刻から 分後に、2人目の水泳選手は 分後に、3人目の水泳選手は 分後にプールの左側にいます。あなたは開始時刻から 分後にプールに到着し、その1分後に1人目の水泳選手と出会います。
2つ目のテストケースでは、1人目の水泳選手は開始時刻から 分後に、2人目の水泳選手は 分後に、3人目の水泳選手は 分後にプールの左側にいます。あなたは開始時刻から 分後にプールに到着し、その 分後に1人目の水泳選手と出会います。
3つ目のテストケースでは、あなたは開始時刻から 分後にプールに到着しました。そのちょうど同じときに、3人の水泳選手がプールの左側にいます。何という幸運でしょう。
4つ目のテストケースでは、全ての水泳選手は開始時刻から 分後にプールの左側にいます。あなたは開始時刻から 分後にプールに到着し、その 分後に3人全員の水泳選手と出会います。
B. Card Deck / Колода карт (1000点)
テストごとのメモリ制限: 512 MB
入力: 標準入力
出力: 標準出力
各カードには と の間の の値が振られています。全ての はどの2つをとっても互いに異なります。デッキのカードには下から上へと番号が振られています、つまり、 は一番下のカードで、 は一番上のカードです。
各ステップにおいてある整数 を選び、元のデッキの上から 枚を取り出し、そのままの順番で新しいデッキの上に置きます。この操作を元のデッキが空になるまで行います。(より理解するためには注記の部分を参照して下さい。)
デッキのオーダーを と定義しましょう。
与えられる元のデッキについて、上記の操作を用いて得ることができる最大オーダーのデッキを出力してください。
入力
1行目には単一の整数 が与えられる、 はテストケースの個数である。
各テストケースの1行目には単一の整数 が与えられる、 はデッキのサイズである。
各テストケースの2行目には 個の整数 のとき が与えられる、これらの値はデッキ内の下から上のカードの値である。
全てのテストケースでの の和が を超えないことは保証されている。
出力
各テストケースについて、最大可能オーダーのデッキを出力せよ。デッキのカードの値を下から上の順に出力せよ。
複数の答えが存在する場合、そのうち1つを出力せよ。
入出力例
4 4 1 2 3 4 5 1 5 2 4 3 6 4 2 5 3 6 1 1 1
4 3 2 1 5 2 4 3 1 6 1 5 3 4 2 1
注記
1つ目のテストケースでの最適戦略の1つは次のようなものです。
- の上からカードを 枚 へ移す: は となり、 は となる
- の上からカードを 枚移す: は となり、 は となる
- の上からカードを 枚移す: は となり、 は となる
- の上からカードを 枚移す: は空になり、 は となる
結果として、 はのオーダーを持つことになります。
2つ目のテストケースでの最適戦略の1つは次のようなものです。
- の上からカードを 枚 へ移す: は となり、 は となる
- の上からカードを 枚 へ移す: は空になり、 は となる
結果として、 はのオーダーを持つことになります。
3つ目のテストケースでの最適戦略の1つは次のようなものです。
- の上からカードを 枚 へ移す: は となり、 は となる
- の上からカードを 枚 へ移す: は となり、 は となる
- の上からカードを 枚 へ移す: は空になり、 は となる
結果として、 はのオーダーを持つことになります。
C. Maximum width / Максимальная ширина (1500点)
テストごとのメモリ制限: 512 MB
入力: 標準入力
出力: 標準出力
全ての から の について となるとき、である数列 は美しいといいます。数列の幅は と定義されます。
クラスメートが、最大の幅をもつ美しい配列を特定するのを手伝ってください。与えられる文字列 と には少なくとも1つの美しい数列が存在することをクラスメートは約束しました。
入力
1行目には2つの整数 が与えられる、これらは文字列 と の長さである。
つづく1行にはラテン文字の小文字からなる長さ の文字列 が与えられる。
最後の行にはラテン文字の小文字からなる長さ の文字列 が与えられる。
与えられる文字列について少なくとも1つ、美しい数列が存在することは保証されている。
出力
1つの整数を出力せよ、その整数とは美しい数列の最大幅である。
入出力例
5 3 abbbc abc
3
5 2 aaaaa aa
4
5 5 abcdf abcdf
1
2 2 ab ab
1
注記
1番目の例では幅 の美しい数列は2つ存在します:
2番目の例では最大幅の美しい数列は です。
3番目の例では美しい数列は1つだけ存在します:
4番目の例では美しい数列は1つだけ存在します:
D. Genius's Gambit / Ход гения (2250点)
テストごとのメモリ制限: 512 MB
入力: 標準入力
出力: 標準出力
次の条件を満たす2つの二進数整数 を求めてください。
- も も 個の0と 個の1から成る
- (これも二進数表記される)がちょうど 個の1を含む
も も頭に0を付けることは禁止されています。
入力
唯一の行に3つの整数 が与えられる、これらは0の数、1の数と計算結果の1の数である。
出力
2つの最適な整数が存在するならば、"Yes
"と出力し、その次に と を2進数で出力せよ。
そうでなければ、"No
"と出力せよ。
複数の答えが存在する場合、そのうち1つを出力せよ。
入出力例
4 2 3
Yes 101000 100001
3 2 1
Yes 10100 10010
3 2 5
No
注記
1つ目の例では となります。したがって は2進数で つの1を持ちます。
2つ目の例では となります。これは1がちょうど1つあります。
3つ目の例では答えを見つけることができないことを示すことができます。
E. Almost Fault-Tolerant Database / Почти отказоустойчивая база данных (3000点)
テストごとのメモリ制限: 512 MB
入力: 標準入力
出力: 標準出力
不幸なことに、最近の事件でデータベースの全てのコピーに保存されている情報が変更された可能性があります。
今回の事件ではどのコピーでも2つまでの要素が変わったと考えられています。データベースの現在の状態に基づいて元の配列を復元しなければなりません。
復元方法が複数ある場合は、そのいずれかを報告してください。全てのコピーから2ヶ所以内しか違わない配列が存在しない場合、そのことを報告してください。
入力
1行目には2つの整数 が与えられる、これらはコピーの数と配列のサイズである。
つづく 行のそれぞれにはデータベースに保存されているコピーの1つが記述されている、これは 個の整数 からなる。
出力
与えられる全てのコピーと食い違わない配列があるとき、"Yes
"と出力し、そののちに配列そのものを出力せよ。この配列は長さが で、 から までの整数しか含んではいけない。
そうでなければ"No
"と出力せよ。
複数の可能な配列が存在する場合、そのうち1つを出力せよ。
入出力例
3 4 1 10 10 100 1 1 1 100 10 100 1 100
Yes 1 10 1 100
10 7 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 2 1 1 1 1 2 2 1 1 1 1 2 2 1 1 1 1 2 2 1 1 1 1 2 2 1 1 1 1 2 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1
Yes 1 1 1 1 1 1 1
2 5 2 2 1 1 1 1 1 2 2 2
No
注記
1つ目の例では、配列 は1つ目のコピーと2つ目のコピーとは1か所のみが異なり、3つ目のコピーとは2ヶ所が異なります。
2つ目の例では、配列 は1つ目のコピーと同じであり、全ての他のコピーとは高々2ヶ所が異なります。
第3の例では、すべてのデータベースのコピーから高々2ヶ所が異なるような配列は存在しません。