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

期間は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に参加してきました。

abc260

2問AC、灰色パフォーマンスでした。

C問題以降が解けなかったのが痛かったです。

abc-261

ABC結果

AC:2問

パフォーマンス:239

レーティング:307→299(-8)

段級位:9級

結果

A問題

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)
B問題

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')
C問題

New Folder

文字列が複数個与えられる。

同じ文字列があれば、以下のように文字列を変形する

test→test(1)

与えられた文字列を変形して出力せよ

残り時間はこの問題に取り組みました。

フォルダの作成をテーマにした、面白い問題です。

問題は取り掛かりやすいですが、実装方法が浮かばず時間ぎれ。

次の目標

今回のコンテストは茶色パフォーマンス(264)でした。

レーディング以下のパフォーマンスになってしまったので、少なくともレーティング以上は出したいですね。

目標:茶色パフォーマンスを継続して出せるようにする

茶色昇級のため、目標を整理しました。

学習内容

・A・B問題を高速で解く(理想5〜10分以内)

・C・D問題をどちらかあるいは両方解く

まずはA・B問題を確実に解けるようにします。

C、D問題についてはどちらか一方を解きます。

これで茶色以上のパフォーマンスを出していきたいです。

 

コメントを残す

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