最近競技プログラミングを始めてB問題は安定して解けるようになったものです。
最近の課題としてC問題以降の問題での計算量削減があり、ただ普通に解いても桁が大きくなると時間内に処理が終わらずにエラーが起きてしまいます。
今回も解くことができましたがどうしても計算量をどのように減らすかわからずに完答することができませんでした。
今回書いたコードを載せますのでどのような部分を改善したら時間内(2 sec)に処理が終わるのかご教示お願い致します。
個人的にはやはり二重ループや全探索による探索が大きな負担になっていると思うのですが今回はこれ以外での実装が困難だったため二重ループを利用しました。
https://atcoder.jp/contests/abc202/tasks/abc202_c
Python3
1s = int(input()) 2lst = [] 3cnt = 0 4for _ in range(3): 5 X = list(map(int, input().split())) 6 lst.append(X) 7 8for n in range(s): 9 A = lst[0][n] 10 for m in range(s): 11 C = lst[2][m] 12 B = lst[1][C-1] 13 if A == B: 14 cnt = cnt + 1 15 16print(cnt) 17
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/27 01:57