0.はじめに
前回Dも解けたのでこの調子で行けちゃうんじゃないかと
思う今日この頃。
まぁそんなことはなく、今回はなんとかCは解けたものの
Dに歯が立たずあえなく終了。
レートは-16の730とまた後退してしまいました。
1. A - A Substring
小手調べの問題。
N,A,BとSを読み込み、SをA文字目から
N-B-1文字目までを切り取って出力して終了。
https://atcoder.jp/contests/abc417/submissions/68105323
2.B - Search and Delete
N,M,A,Bを入力し
Bを一文字ずつ見ていき
AにあったらAからその文字を削除を繰り返し
最後に残ったリストAを出力して終了と
pythonパワーでさっくり回答。
処理時間が気になりましたがB問題なので
何とかなるかと提出したら何とかなりました。
https://atcoder.jp/contests/abc417/submissions/68113204
3.C - Distance Indicators
とりあえず、素直に全組み合わせで条件(j-i=A[i]+A[j])を満たすかを
チェックしてカウントする方式で提出。
むちゃくちゃTLEとなったので、熟考。
【考え方】
j-i=A[i]+A[j]をいじって
☆i+A[i]=j-A[j]
i<jかつ、☆の式を満たすiとjの組数が答えとなる
【実装】
1.N,Aを読み込む
2.デフォルト辞書Dを初期値空リストで定義
3.以下A[1]~ANまで繰り返し
-1.i-A[i]が0以上の時
辞書Dにキー:i-A[i]、値iで登録
4.変数ansを0で初期化
5.以下A[1]~ANまで繰り返し
-1.変数XにA[i]+iをセット
-2.DにXがある場合、ansにD[X]の長さを加算
6.ansを出力して終了
最初Dのリストを2分探索とかしてましたが
条件を満たす時はすべての数が当てはまるので
カウントするだけで済みました。
https://atcoder.jp/contests/abc417/submissions/68136818
以上