【AtCoder2週目】競プロ初心者が6ヶ月で水色コーダー目指す学習記

Atcoderでもっと多くの問題を解きたい!と言うことで学習していきます。

期間は6ヶ月とし、水色コーダーを目指します。

 

Atcoder学習、最初の週はこちら

atcoder-logo【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に参加してきました。

ABC245

結果はこんな感じでした。

abc245

ABC結果

AC:2問

パフォーマンス:266

レーティング:77→93

段級位:12級

結果

A問題

高橋くんは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')
B問題

長さ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 
C問題

数列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まとめコンテスト

 

atcoder-logo【AtCoder3週目】競プロ初心者が6ヶ月で水色コーダー目指す学習記

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です