0.はじめに
緑コーダ復帰後の初戦
A~Cまでは順調に解けたもののDで苦戦。
TLEの解決方法が見いだせず、あえなくタイムオーバー。
茶色に逆戻りしました・・・。
1.A - Strictly Increasing?
リストを2つ目から見ていき、
参照している値が、一つ前の値以下ならNoを出力して終了
最後まで参照してプログラムが終了してなければ
Yesを出力して終了
https://atcoder.jp/contests/abc395/submissions/63243538
2.B - Make Target
たまに見るBの割に難しい問題。
いい感じの実装方法が分からなかったので、
問題文をそのまま実装してみました。
【実装】
1.N×Nの2次元リストLを用意し、”.”で初期化
2.以下iを1~Nまで繰り返し
-1.変数jにN+1-iをセット
-2.iがj以下の時以下の処理
-1.xとyをそれぞれ0~jまで繰り返し
iが奇数なら"#"を偶数なら"."をL[x][y]にセット
3.Lを1列ずつ結合して表示して終了
https://atcoder.jp/contests/abc395/submissions/63265051
3.C - Shortest Duplicate Subarray
問題文はややこしいですが、2つの同じ数の間が一番短い物を調べるだけの簡単な作業。
まず空の辞書と、変数ans(初期値10の18乗)を用意し、列を先頭から参照
見ている数字が辞書になければ、その数字をキー、位置を値に登録。
見ている数字が辞書にあれば、その数字の位置と見ている数字の位置の差+1を求め
ansをその数とansのうち小さい方で更新しつつ、辞書の値を見ている数字の位置に更新
最後にansを出力して終了
https://atcoder.jp/contests/abc395/submissions/63269290
以上