Codeforces Round #772 (Div. 2) 問題文和訳
- A. Min Or Sum / Минимальная OR сумма (500点)
- B. Avoid Local Maximums / Избегайте локальных максимумов (1000点)
- C. Differential Sorting / Дифференциальная сортировка (1500点)
- D. Infinite Set / Бесконечный набор (2250点)
- E. Cars / Автомобили (2550点)
- F. Closest Pair / Ближайшая пара (3000点)
A. Min Or Sum / Минимальная OR сумма (500点)
テストごとのメモリ制限: 256 MB
入力: 標準入力
出力: 標準出力
この配列に対して次の操作を行うことができます。
上記の操作を任意の回数行った後に得られる配列の要素の和の最小値を出力してください。
入力
各テストは複数のテストケースが含まれる。1行目にはテストケースの個数 が与えられる。以下、テストケースの記述が続く。
各テストケースの1行目には整数 が与えられる、これは配列の大きさである。
各テストケースの2行目には 個の整数 が与えられる。
出力
各テストケースについて、単一の値を出力せよ、その値とは達成できる配列の最小和である。
入出力例
4 3 1 3 2 5 1 2 4 8 16 2 6 6 3 3 5 6
3 31 6 7
注記
1つ目の入力例では、次のような操作で配列 を得ることができます。
- と選び、 とする、この操作は であるため有効である。配列は となる。
- と選び、 とする、この操作は であるため有効である。配列は となる。
最小和が であることは証明することができます。
2つ目の入力例では、操作は必要ありません。
B. Avoid Local Maximums / Избегайте локальных максимумов (1000点)
テストごとのメモリ制限: 256 MB
入力: 標準入力
出力: 標準出力
この配列に対して何回か操作を行うことができます。1回の操作では、配列の中の1つの要素を から までの任意の整数に置き換えることができます。
結果として得られる配列に極大要素が含まれないようにするため必要な操作の最小回数と、操作後の配列を出力してください。
要素 はその近傍の両方よりも厳密に大きい(即ち、 かつ )時、極大要素であるといいます。 と は近傍要素がそれぞれ1つずつしかないため、極大要素となることはありません。
入力
各テストは複数のテストケースが含まれる。1行目には単一の整数 が与えられる、これはテストケースの個数である。以下、 個のテストケースが続く。
各テストケースの1行目には単一の整数 が与えられる、これは配列の大きさである。
各テストケースの2行目には 個の整数 が与えられる、これらは配列の要素である。
全てのテストケースでの の和が を超えないことは保証されている。
出力
各テストケースについて、まず、単一の整数 を単一行にで出力せよ、この数は必要な操作の最小回数である。次に 個の整数から成る1行を出力せよ、この整数は操作の結果得られる配列である。この配列は、最初の配列とちょうど 個の要素が異なっていなければならないことに注意せよ。
答えが複数ある場合は、そのうちのいずれかを出力せよ。
入出力例
5 3 2 1 2 4 1 2 3 1 5 1 2 1 2 1 9 1 2 1 3 2 3 1 2 1 9 2 1 3 1 3 1 3 1 3
0 2 1 2 1 1 3 3 1 1 1 2 2 2 1 2 1 2 3 3 2 3 3 2 1 2 2 1 3 3 3 1 1 1 3
注記
1つ目の入力例では、配列内に極大要素がないため、操作を行う必要はありません。
2つ目の入力例では、 を に変えることができ、そうすることで配列は極大要素を持たないようになります。
C. Differential Sorting / Дифференциальная сортировка (1500点)
テストごとのメモリ制限: 256 MB
入力: 標準入力
出力: 標準出力
次の操作を 回まで行うことができます: 3つのインデックス を選び、 を に置換する。この操作の後、 は 以下でなければなりません。
結果として得られる配列が非減少になるようにすることが目標です。解が複数存在する場合は、そのいずれをも出力することができます。実現不可能である場合は、そのことを知らせてください。
入力
各テストは複数のテストケースが含まれる。1行目には単一の整数 が与えられる、これはテストケースの個数である。以下、 個のテストケースが続く。
各テストケースの1行目には単一の整数 が与えられる、これは配列の大きさである。
各テストケースの2行目には 個の整数 が与えられる、これらは配列の要素である。
全てのテストケースでの の和が を超えないことは保証されている。
出力
各テストケースについて、解が存在しない場合、単一行に を出力せよ。そうでない場合、1行目に単一の整数 を出力せよ、この数は実行した操作の回数である。
その後、続く 行の 行目には3個の整数 を出力せよ、これらは 回目の操作についての説明である。
解が複数存在する場合は、どれを出力してもよい。このタスクでは、操作回数を最小化する必要はないことに注意せよ。
入出力例
3 5 5 -4 2 -1 2 3 4 3 2 3 -3 -2 -1
2 1 2 3 3 4 5 -1 0
注記
1つ目の入力例では、配列は次のようになります。
1回目の操作の後:
2回目の操作の後:
2つ目の入力例では、どのような操作を行っても配列を昇順にすることは不可能です。
3つ目の入力例では、配列は既に昇順になっているため、操作を行う必要はありません。
D. Infinite Set / Бесконечный набор (2250点)
テストごとのメモリ制限: 256 MB
入力: 標準入力
出力: 標準出力
以下の条件の少なくとも一つを満たす全ての整数 を含む無限整数集合 を考えます。
- ある について
- について
- について
例えば、 のとき、 内の小さい方から 個の要素は となります。
の要素のうち よりも厳密に小さい要素の個数を求めて下さい。答えは大きくなる可能性があるため、modulo で出力してください。
入力
1行目には2つの整数 が与えられる。
2行目には 個の整数 が与えられる。
内の全ての数が相異なることは保証される。
出力
単一の整数を出力せよ、その数とは の要素のうち よりも厳密に小さい要素の個数である。modulo で出力することに忘れないようにせよ。
入出力例
2 4 6 1
9
4 7 20 39 5 200
14
2 200000 48763 1000000000
448201910
注記
1つ目の入力例では、 よりも小さい要素は です。
2つ目の入力例では、 よりも小さい要素は です。
E. Cars / Автомобили (2550点)
テストごとのメモリ制限: 512 MB
入力: 標準入力
出力: 標準出力
より形式的には、 番目の車を1文字と1つの整数で表すことができます: 方向 と 位置 です。 である場合、 は時間に対して一定の割合で減少します。同様に である場合、 は時間に対して一定の割合で増加します。
2台の車が速度に関係なく決して同じ地点に着かない場合、無関係であるといいます。つまり、どの瞬間にも同じ座標を共有することはありません。
2台の車が速度に関係なく同じ地点に着く場合、運命的であるといいます。つまり、同じ座標を共有する瞬間があります。
残念なことに、車に関する情報はすべて失われてしまいましたが、 個の関係は覚えています。関係には2種類あります。
: 台目と 台目の自動車が無関係である。
: 台目と 台目の自動車が運命的である。
この関係を満たす自動車の方向と位置を復元するか、それが不可能であることを報告してください。解が複数存在する場合、そのいずれをも出力してもいいです。
2台の車が同じ座標を共有している場合は交差となりますが、そのままそれぞれの方向への移動が継続されることに注意してください。
入力
1行目には2つの整数 が与えられる、それぞれ自動車の台数と制限の個数である。
次の 行のそれぞれには3個の整数 が与えられる。
の場合、 台目と 台目の自動車は無関係である。そうでないとき、 台目と 台目の自動車は運命的である。
自動車の各ペアについて、その間の関係は最大でも つであることは保証される。
出力
1行目には、関係を満たす車の方向と位置を復元できるかどうか、"YES
"または"NO
"のいずれかを出力せよ(大文字小文字はいずれの場合でも可)。
答えが"YES
"である場合、それぞれの行が1文字と1つの整数を含む 行出力せよ。1文字と1つの整数とは であり、 台目の自動車の情報を表す。
方向が左の場合は で、そうでない場合 とする。
は 台目の自動車の位置である。 は全て異なることに注意せよ。
解が存在する場合、 の制約を満たす解が存在することは証明することができる。
入出力例
4 4 1 1 2 1 2 3 2 3 4 2 4 1
YES R 0 L -3 R 5 L 6
3 3 1 1 2 1 2 3 1 1 3
NO
F. Closest Pair / Ближайшая пара (3000点)
テストごとのメモリ制限: 256 MB
入力: 標準入力
出力: 標準出力
番目の点と 番目の点の重み付き距離は と定義されます、ここで は の絶対値を表します。
個のクエリに答える必要があり、その 番目のクエリは次のようなものです: 部分列 内の相異なる全ての点の組の間での最小の重み付き距離を求めよ。
入力
1行目には2個の整数 が与えられる、これらは点とクエリの個数である。
行が続き、その 行目には2個の整数 が与えられる、これらは 番目の点の座標と重みである。
点は の昇順に与えられることは保証されている。
その後、 行が続き、その 行目には2個の整数 が与えられる、これらは 番目のクエリの部分列である。
出力
各クエリについて1個の整数を出力せよ、その数とは与えられた部分列内の異なる全ての点の組の間での最小の重み付き距離である。
入出力例
5 5 -2 2 0 10 1 1 9 2 12 7 1 3 2 3 1 5 3 5 2 4
9 11 9 24 11
注記
1つ目のクエリについて、最小重み付き距離は点 と点 の間のもので、 となります。
2つ目のクエリについて、最小重み付き距離は点 と点 の間のもので、 となります。
4つ目のクエリについて、最小重み付き距離は点 と点 の間のもので、 となります。