期間は6ヶ月(25週間)とし、水色コーダーを目指します。
最近は、C・D問題攻略のためアルゴリズム別学習を進めています。
今週学習したこと
今週からABC Problemsで過去問に取り組み始めました。
B問題を解くのと、アルゴリズムの分野別学習を進めます。
ABC ProblemsでB問題を30問
さらに@e869120さんの記事で分野別学習を始めました。
レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【中級編:目指せ水色コーダー!】
基本アルゴリズム12個を学ぶと良いようです。
各記事ボリュームがありますが、まずは12個基本を押さえます。
全探索 | 二分探索 | 深さ優先探索 (DFS) | 幅優先探索 (BFS) |
動的計画法 (DP) | ダイクストラ法 | ワーシャルフロイド法 | クラスカル法 |
高速な素数判定法 | べき乗を高速に計算する手法 | 逆元を計算する手法 | 累積和 |
今週の学習項目は特になしです。
筆者の学習歴
学習歴はこんな感じです。
・利用言語はPython3
・Pythonの利用は業務で少し
・学習は「みんなのPython」を読んだくらい
・ABCコンテストには数回参加した(解けるのは1〜2問)
競プロではC++を使う方が多いかと思いますが、筆者はPythonのシンプルさに感動したためPythonで取り組みます。
今日が2022年7月23日(土)で、9月20日までの半年の期間で学習を進めます。
毎週のAtCoder Beginner Contest(ABC)をペースメーカーにしていきます。
今週のABC
ABCに参加してきました。
2問AC、灰色パフォーマンスでした。
C問題以降が解けなかったのが痛かったです。
AC:2問
パフォーマンス:239
レーティング:307→299(-8)
段級位:9級
結果
Intersection
閉区間Aと閉区間Bが与えられる。
どちらにも含まれる区間の長さを求めよ。
問題はわかりやすいですが、方針を決めるのに手間取りました。
閉区間Aと閉区間Bに含まれる座標を集合eに追加して、集合eの要素数に着目します。
AとBの区間がかぶっていれば、集合eに含まれる要素数はAとBの長さの合計より小さくなります。
6分30秒でACしました。
a,b,c,d=map(int,input().split())
e=set()
k=b-a+d-c+2
for i in range(a,b+1):
e.add(i)
for i in range(c,d+1):
e.add(i)
if k-len(e)==0:
print(0)
else:
print(k-len(e)-1)
Tournament Result
N人の参加者がいて、総当たり戦をする。
結果の表が与えられるので、表に矛盾があるか判定せよ。
2<N<1000の条件から、素直にループを組めばいけると判断しました。
15分ほどでACしましたが、3WAしてしまったので実質30分でAC。
N=int(input())
a = [list(input())for l in range(N)]
#print(a)
for i in range(N):
for j in range(N):
if a[i][j]=='L' and a[j][i]!='W':
print('incorrect')
exit()
if a[i][j]=='W' and a[j][i]!='L':
print('incorrect')
exit()
if a[i][j]=='D' and a[j][i]!='D':
print('incorrect')
exit()
print('correct')
New Folder
文字列が複数個与えられる。
同じ文字列があれば、以下のように文字列を変形する
test→test(1)
与えられた文字列を変形して出力せよ
残り時間はこの問題に取り組みました。
フォルダの作成をテーマにした、面白い問題です。
問題は取り掛かりやすいですが、実装方法が浮かばず時間ぎれ。
次の目標
今回のコンテストは茶色パフォーマンス(264)でした。
レーディング以下のパフォーマンスになってしまったので、少なくともレーティング以上は出したいですね。
目標:茶色パフォーマンスを継続して出せるようにする
茶色昇級のため、目標を整理しました。
・A・B問題を高速で解く(理想5〜10分以内)
・C・D問題をどちらかあるいは両方解く
まずはA・B問題を確実に解けるようにします。
C、D問題についてはどちらか一方を解きます。
これで茶色以上のパフォーマンスを出していきたいです。