Codeforces Round #708 (Div. 2) 問題文和訳
- A. Meximization / Мексимизация (500点)
- B. M-arrays / M-массивы (750点)
- C1. k-LCM (easy version) / k-НОК (простая версия) (750点) C2. k-LCM (hard version) / k-НОК (сложная версия) (500点)
- D. Genius / Гений (1750点)
- E1. Square-free division (easy version) / Бесквадратное разбиение (простая версия) (1500点) E2. Square-free division (hard version) / Бесквадратное разбиение (сложная версия) (1500点)
A. Meximization / Мексимизация (500点)
テストごとのメモリ制限: 256 MB
入力: 標準入力
出力: 標準出力
形式的には、配列 の要素の集合と配列 の要素の集合が等しく(配列 が配列 の要素をある程度並べ替えることで得られることと同値)、 が最大となるような配列 を求めなければなりません。
非負整数の集合の とはその集合に属さない最小の非負整数の事です。
例えば となります。
入力
1行目には単一の整数 が与えられる、これはテストケース数である。
各テストケースの1行目には単一の整数 が与えられる。
各テストケースの2行目には 個の整数 が与えられる。
出力
各テストケースについて配列 を出力せよ、この配列は全接頭辞の の和が最大となるように を適切に並べ替えたものである。
答えが複数ある場合、そのいずれかを求めよ。
入出力例
3 7 4 2 0 1 3 3 7 5 2 2 8 6 9 1 0
0 1 2 3 4 7 3 2 6 8 9 2 0
注記
1つ目のテストケースの答えの接頭辞の は次のようになります。
の和 です。これが接頭辞の の和の可能な最大値であることは証明できます。
B. M-arrays / M-массивы (750点)
テストごとのメモリ制限: 256 MB
入力: 標準入力
出力: 標準出力
この配列の要素をいくつかの配列に分割しなければなりません。新しい配列内の要素は好きなように並び替えることができます。
配列内での各隣り合う2つの数字(各 について と の位置にある2つの数字を隣り合っていると呼ぶ)の和が で割り切れる時、その配列を -可分であるといいます。要素数1の配列は -可分です。
を分割して得られる -可分な配列の最小数を求めよ。
入力
1行目には単一の整数 が与えられる、これはテストケース数である。
各テストケースの1行目には2つの整数 が与えられる。
各テストケースの2行目には 個の整数 が与えられる。
全てのテストケースでの の和が を超えないことは保証されている。
出力
各テストケースについて、問題の答えを出力せよ。
入出力例
4 6 4 2 2 8 6 9 4 10 8 1 1 1 5 2 4 4 8 6 7 1 1 666 2 2 2 4
3 6 1 1
注記
1つ目のテストケースでは、要素を以下のように分けることができます。
- : は で割りきれるので -可分な配列です。
- : と は で割りきれるので -可分です。
- : 1要素からなるので -可分な配列です。
C1. k-LCM (easy version) / k-НОК (простая версия) (750点)
C2. k-LCM (hard version) / k-НОК (сложная версия) (500点)
テストごとのメモリ制限:256 MB
入力: 標準入力
出力: 標準出力
正整数 が与えられます。次を満たすような 個の正整数 を求めてください。
与えられた制約に対し、答えが常に存在することは示すことができます。
出力
各テストケースに対して、すべての条件を満たす 個の正整数 を出力せよ。
入出力例
3 3 3 8 3 14 3
1 1 1 4 2 2 2 6 6
2 6 4 9 5
1 2 2 1 1 3 3 1 1
D. Genius / Гений (1750点)
テストごとのメモリ制限: 32 MB
入力: 標準入力
出力: 標準出力
から の番号が付いた 問の問題があります。 問目の問題の複雑さは 、タグは 、スコアは です。
問題 を解いた後、 かつ を満たし、かつその場合のみ問題 を解くことができます。それを解いたのち が変化し、 となり、 点を獲得します。
どの問題も1匁にすることができます。問題はどんな順番でもよく、同じ問題を何度も解くこともできます。
初期状態では です。得られる点数の最大値を求めてください。
入力
1行目には単一の整数 が与えられる、これはテストケース数である。
各テストケースの1行目には1つの整数 が与えられる、これは問題数である。
各テストケースの2行目には 個の整数 が与えられる、これらは問題のタグである。
各テストケースの3行目には 個の整数 が与えられる、これらは問題のスコアである。
全てのテストケースでの の和が を超えないことは保証されている。
出力
各テストケースについて単一の整数を出力せよ、その数とは得られる点数の最大値である。
入出力例
5 4 1 2 3 4 5 10 15 20 4 1 2 1 2 5 10 15 20 4 2 2 4 1 2 8 19 1 2 1 1 6 9 1 1 666
35 30 42 0 0
注記
1つ目のテストケースでは、最適な問題を解く順番は次のようなものです。
- : 合計点は で となる
- : 合計点は で となる
- : 合計点は で となる
- : 合計点は で となる
2つ目のテストケースでは、最適な問題を解く順番は次のようなものです。
- : 合計点は で となる
- : 合計点は で となる
- : 合計点は で となる
- : 合計点は で となる
3つ目のテストケースでは、最適な問題を解く順番は次のようなものです。
- : 合計点は で となる
- : 合計点は で となる
- : 合計点は で となる
E1. Square-free division (easy version) / Бесквадратное разбиение (простая версия) (1500点)
E2. Square-free division (hard version) / Бесквадратное разбиение (сложная версия) (1500点)
テストごとのメモリ制限: 256 MB
入力: 標準入力
出力: 標準出力
正整数の配列 があります。各セグメント内に積が完全平方となる2つの数(違う位置の数)が存在しないように最小数の連続セグメントに分割しなければなりません。
さらに、分割する前に次の操作を最大 回行うことができます: 配列内の数を選び、その値を任意の正整数に変える。イージー版では であるため、これは重要ではありません。
最適な変更を行ったときの、連続セグメントの最小数はいくつでしょうか?
入力
1行目には単一の整数 が与えられる、これはテストケース数である。
各テストケースの1行目には2つの整数 (イージー版)/ (ハード版) が与えられる。
各テストケースの2行目には 個の整数 が与えられる。
全てのテストケースでの の和が を超えないことは保証されている。
出力
各テストケースに対して単一の整数を出力せよ、その数は問題の答えである。
入出力例
3 5 0 18 6 2 4 1 5 0 6 8 1 24 8 1 0 1
3 2 1
3 5 2 18 6 2 4 1 11 4 6 2 2 8 9 1 3 6 3 9 7 1 0 1
1 2 1
注記(easy)
1つ目のテストケースでは、次のように分割できます。
注記(hard)
1つ目のテストケースでは、次のように配列を変化させることができます: (変化した要素は下線されている)。その後、配列を分割する必要はなく、答えは となります。
2つ目のテストケースでは、次のように配列を変化させることができます: 。その後、次のような分割が最適となります。