Atcoderでもっと多くの問題を解きたい!と言うことで学習していきます。
期間は6ヶ月とし、水色コーダーを目指します。
Atcoder学習、最初の週はこちら
【AtCoder1週目】競プロ初心者が6ヶ月で水色コーダー目指す学習記
筆者の学習歴
学習歴はこんな感じです。
まだまだ入門と言う感じですね。
・利用言語はPython3
・Pythonの利用は業務で少し
・学習は「みんなのPython」を読んだくらい
・ABCコンテストには数回参加した(解けるのは1〜2問)
競プロではC++を使う方が多いかと思いますが、筆者はPythonのシンプルさに感動したためPythonで取り組みます。
今日が2022年3月26日(土)で、9月20日までの半年の期間で学習を進めます。
毎週のAtCoder Beginner Contest(ABC)をペースメーカーにしていきます。
今週学習したこと
今週3月20日(日)〜3月26日(土)は、グラフ理論の学習をしていました。(BFS、DFS)
実装にはまだまだ不安がありますが、グラフの実装方・考え方をインプットしました。
今週のABC
ABCに参加してきました。
結果はこんな感じでした。
AC:2問
パフォーマンス:266
レーティング:77→93
段級位:12級
結果
高橋くんはA時B分、青木くんはC時D分1秒に起きました。
早起きな人の名前を出力せよ
これは簡単ですね。
このように提出してACしました。
a, b, c ,d = map(int, input().split())
ans=0
if a > c:
ans=1
elif a == c:
if b > d:
ans=1
if ans == 0:
print('Takahashi')
else:
print('Aoki')
長さNの数列Aに含まれない最小の非負整数Aiを出力せよ
Aiの値が0以上2,000以下と決まっているので昇順のループを回せばOKです。
n=int(input())
A = list(map(int, input().split()))
for i in range(2001):
if i not in A:
print(i)
break
数列A、Bに対して以下の条件を満たすような数列Xが存在するか判定せよ。
・全てのiについて Xi=Ai または Xi=Bi
・全てのiについて |Xi-Xi-1| <= K
AiとBiを選んで選択するアルゴリズムがわからず断念。
DP(動的計画法)を使えば解けた問題でした。
n=int(input())
lst = list(range(1,2*n+2))
#print(lst)
l=1
while l != 0:
print(l, flush=True)
lst.remove(l)
#print(lst)
s = int(input())
if s == 0:
#print('end')
break
else:
lst.remove(s)
l = lst[0]
#print(lst)
感想
2問目までは安定して解ける様になってきました。
2問目まで25分前後かかっているので、速度をあげたいですね。
3問目で、DPの練習が必要と感じました。
来週学習すること
ABCの5問目以降はグラフの問題で、グラフの実装方法やアルゴリズムが分かっていないと手も足も出ない感じでした。
来週に向けて、グラフの学習をしたほうが良さそう。
DPの練習も進めます。
・Educationl DP Contest / DPまとめコンテスト