はじめに
こんにちは。Akagi_shrineです。 ABC4完で満足していましたが、余裕があったのでE問題に挑戦したらまさかのAC!
大満足のコンテストになって、そのまま入緑できました
結果サマリ
- コンテスト: ABC464
- WCPC参加人数: 6人
各問題の最速解答者 (ペナルティ無し)
| 問題 | 参加者名 | タイム | 言語 |
|---|---|---|---|
| A | nsubaru | 1:02 | Java |
| B | kotomiko | 6:35 | C++ |
| C | kotomiko | 14:20 | C++ |
| D | ShoboiNamae | 26:27 | C++ |
| E | Akagi_shrine | 74:21 | C++ |
| F | - | - | - |
| G | - | - | - |
今週の出題
A問題
問題文を表示
問題文 ある都にて、東軍と西軍が戦っています。
高橋君は戦っている軍勢の情報を文字列 として記録しました。
には文字 E と W のみが含まれており、 に含まれる文字 E の数と東軍の人数、W の数と西軍の人数がそれぞれ一致します。
高橋君が記録した が与えられるので、東軍の人数が西軍の人数より多いなら East 、西軍の人数が東軍の人数より多いなら West と出力してください。
なお、 の長さは奇数であることが保証されます。そのため、東軍と西軍のどちらか一方がもう一方に比べて真に人数が多い(つまり、両方の軍勢の人数が同じであることはない)ことが証明できます。
制約 - は長さ 以上 以下の E と W からなる文字列
- の長さは奇数
入力 入力は以下の形式で標準入力から与えられる。
出力 答えを出力せよ。
A問題はいつも通りの難易度でした。前から順番にEとWの数を数えて、多い方を判定すれば解けます。
B問題
問題文を表示
問題文 高さ ピクセル、幅 ピクセルの白黒画像があります。 上から 行目、左から 列目のピクセルの色は文字 として与えられ、. は白、# は黒を表します。
この画像の上下左右の端から、すべてのピクセルが白であるような行や列を削除します。 具体的には、次の処理を順に行います。
- 画像の最上行がすべて白である限り、最上行を削除することを繰り返す。
- 画像の最下行がすべて白である限り、最下行を削除することを繰り返す。
- 画像の最左列がすべて白である限り、最左列を削除することを繰り返す。
- 画像の最右列がすべて白である限り、最右列を削除することを繰り返す。
処理後の画像を出力してください。 なお、与えられる画像には黒いピクセルが少なくとも つ存在します。
制約 -
- は
.または#である - 黒いピクセルが少なくとも つ存在する
入力 入力は以下の形式で標準入力から与えられる。
出力 処理後の画像を、以下の形式で出力せよ。
ここで、 は処理後の画像の高さと幅(ピクセル単位)である。
また、 は処理後の画像の上から 行目、左から 列目のピクセルの色を表す文字であり、白のときは . 、黒のときは # とする。
B問題はグリッド上に出現する黒色の座標において、縦方向と横方向それぞれの最小と最大の値を求めます。これらの範囲が処理後の画像となります。
C問題
問題文を表示
問題文 高橋君は鳥 の 羽の鳥を 日間観察しました。
高橋君が観察した鳥には色 の 色のうちいずれか 色がついていますが、これらの鳥には観察期間中に色が変化するという興味深い特徴があります。
鳥 は 日目以前の観察では色 であり、 日目以降の観察では色 になりました。 ただし、 である場合はその鳥の色は 日目の観察から であり、 である場合はその鳥の色は観察期間中に変化しませんでした。
について、 日目の観察で鳥の色が何種類あったかを求めてください。
制約 -
- 入力はすべて整数
入力 入力は以下の形式で標準入力から与えられる。
出力 行出力せよ。 そのうち 行目には、 日目に鳥の色が何種類あったかを出力せよ。
問題Cは観察した日数の制約がと小さいため、日数分の配列をとりインデックスを日数として、色が変わる日に何色から何色に変わるかを保持して、1日目から順番に見ればで解くことができます。
D問題
問題文を表示
問題文 これから 日間の天気が文字列 として与えられます。
の 文字目が S であるとき 日目の天気は晴れ、R であるとき 日目の天気は雨です。
また、現時点では嬉しさは です。
あなたは、以下の操作を 回以上何回でも行えます。
- 以上 以下の整数 を選ぶ。
- 日目の天気が晴れであれば雨、雨であれば晴れに変更する。ただし、 日目の天気を変更した場合、嬉しさが 減少する。
操作を行った後の最終的な天気に対して、以下の条件で嬉しさが増加します。
- を満たす各整数 について、変更後の 日目の天気が雨、かつ 日目の天気が晴れであるとき、嬉しさが 増加する。
操作を行った結果として、達成可能な嬉しさの最大値を求めてください。
個のテストケースが与えられるので、それぞれについて答えを求めてください。
制約 -
- は 以上 以下の整数
- は長さ の
SとRからなる文字列 - は 以上 以下の整数
- は 以上 以下の整数
- ひとつの入力における の総和は 以下
入力 入力は以下の形式で標準入力から与えられる。ここで は 個目のテストケースを意味する。
各テストケースは以下の形式で与えられる。
出力 行出力せよ。 行目には 個目のテストケースの答えを出力せよ。
D問題はDPを用いて解きます。天気を変えるペナルティと雨→晴れによる嬉しさアップが複雑に絡み合った問題ですが、直前の日の天気さえ分かれば、今日の嬉しさを確定できるという性質から、DPに落とし込むことができます。
E問題
問題文を表示
問題文 のグリッドがあります。はじめ、すべてのマスに A が書かれています。上から 行目、左から 列目のマスを で表します。
これから 回の操作を順に行います。 回目の操作では、左上のマスを 、 右下のマスを とする長方形に含まれるすべてのマスを、英大文字 で上書きします。
すべての操作を行った後のグリッドを出力してください。
制約 -
- は英大文字
- 入力される数値はすべて整数
入力 入力は以下の形式で標準入力から与えられる。
出力 行出力せよ。 行目には長さ の文字列であって、 文字目が操作後のグリッドにおいて に書かれている英大文字であるものを出力せよ。
E問題は愚直に解くと であるため、後ろのクエリでの文字の方が優先されることと、からのの長方形で上書きすることから、二次元の累積maxにより、すべてのマスに対して自分を覆っている最大のクエリ番号を求めることができます。
最後に
E問題では解法がfor文を回してグリッドの値をmaxとりながら更新するだけで解けてしまうため、合っているのかが少し心配になりました。
Akagi_shrineでした。