【AtCoder26週目】競プロ初心者が6ヶ月で水色コーダー目指す学習記(延長戦)

水色コーダーを目指す取り組みをしてきました。

期間は2022年3月から、9月20日までの半年としてきました。

結果は407(茶色)で終わりました。

 

悔しいので、3ヶ月の延長戦を設定して続けることにしました。

 

今週学習したこと

学習内容

・特になし

@e869120さんの記事の分野別学習記録

レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【中級編:目指せ水色コーダー!】

基本アルゴリズム12個を学ぶと良いようです。

各記事ボリュームがありますが、まずは12個基本を押さえます。

全探索 二分探索 深さ優先探索 (DFS) 幅優先探索 (BFS)
動的計画法 (DP) ダイクストラ法 ワーシャルフロイド法 クラスカル法
高速な素数判定法 べき乗を高速に計算する手法 逆元を計算する手法 累積和

 

筆者の学習歴

学習歴はこんな感じです。

筆者の競技プログラミング歴

・利用言語はPython3

・Pythonの利用は業務で少し

・学習は「みんなのPython」を読んだくらい

・ABCコンテストには数回参加した(解けるのは1〜2問)

競プロではC++を使う方が多いかと思いますが、筆者はPythonのシンプルさに感動したためPythonで取り組みます。

毎週のAtCoder Beginner Contest(ABC)をペースメーカーにしていきます。

今週のコンテスト

ABC269

ABCに参加してきました。

ABC269

abc269

3問AC、茶色パフォーマンスでした。

A、B、C問題は解くことができましたた。

ARC結果

AC:3問

パフォーマンス:569

レーティング:384→404(+20)

段級位:8級

茶色に復帰しました

結果

A問題

Anyway Takahashi

与えられる4つの数字の計算結果と、’Takahashi’を出力せよ

1分13秒時点(所要時間1分13秒)でACしました。

この問題は簡単なので、タイムアタック感覚で早く提出することを意識しました。

a,b,c,d=map(int, input().split())
print((a+b)*(c-d))
print('Takahashi')
B問題

Rectangle Detection

長方形のグリッドが与えられる。

グリッド内部にある長方形######の位置を求めよ

17分05秒時点(所要時間15分52秒)でACしました。

グリッドは100マスなので、全探索して”#”が見つかった場所のx座標、y座標を集合X、Yに追加します。

最後にX、Yの最小・最大値を出力して完成です。

この問題はもう少し早く解くこともできたかと思います。(10分くらいで解きたかった)


a = [input() for l in range(10)]
X=set()
Y=set()

for i in range(10):
  for j in range(10):
    if a[i][j]=='#':
      X.add(i)
      Y.add(j)
      
sortX=sorted(list(X))
sortY=sorted(list(Y))

#print(sortX)
#print(sortY)
print(sortX[0]+1,' ', sortX[len(sortX)-1]+1)
print(sortY[0]+1,' ', sortY[len(sortY)-1]+1)
C問題

Submask

非負整数Nの部分集合の数値を全て出力せよ

60分05秒時点(所要時間43分)でACしました。

制約が厳しく、Nは2^60までありうるのでNの全探索をするとTLEします。

この問題はbit全探索すべきとわかりますが、処理に時間がかかりました。

演算子「&」を使って部分集合を求めています。


M=int(input())
R = [0]
v = (-1) & M
#print(v)
while v:
    R.append(v)
    v = (v - 1) & M
    
R.sort()
#print(R)
for i in R:
  print(i)
D問題

Do use Hexagon Grid

6角形のグリッドが幾つの連結部分を成すか出力せよ

残り時間はこの問題に取り組みましたが、解答を提出できませんでした。

BFSかもとは思いましたが、実装力不足でした。

次の目標

目標:緑色パフォーマンスを出せるようにする

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

学習内容

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

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

安定して茶色パフォーマンスを出し、できれば緑色パフォーマンスを目指します。

 

abc269-graph

今度こそ水色を目指します。

コメントを残す

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