勉強の記録

機械学習、情報処理について勉強した事柄など

競プロ

LeetCode 1036 - Escape a Large Mazeの別解(?)

https://leetcode.com/contest/weekly-contest-134/submissions/detail/225394673/ 問題設定自体は普通の迷路と同じだが,迷路のサイズが106と巨大. 普通にdfsやbfsをしていたのでは到底終わらない. 逆にblocked cellは合計200個以下という制約がある 考え…

Google Code Jam Round1B 通過

Round 1Aは通過できなかったが,1Bで通過できた.深夜ラウンド辛い....日本は幸い翌日が休日なので参加できた. Visibleを通ってUnvisibleを通らないコードもUnvisible正解時のpenaltyになるので,少し考えてunvisibleも通せそうならその解法でいった方が良…

二分探索のための遅延評価リストを作った

docs.python.org 標準ライブラリに二分探索が用意されているが,sortと違ってkeyが指定できない. 毎回二分探索を書いても良いが,境界条件などで足を救われがち. よって,クラス継承の練習を兼ねてgetitemしたときだけfuncで遅延評価されるリストを作った…

Union Findの問題をpythonで解く

グループ分けして、適宜グループを合体させるような局面で登場するデータ構造。 全ノードに対してグループ名自体を持つようすると、合体のたびに少なくとも一方のグループをすべて書き換える必要があって、時間がかかる。ツリー構造で持っておいて、グループ…

Google CodeJamをVSC上でデバッグする

Qualification RoundはAtCoderのコードテストを間借りしてコーディングしたのだけど、やっぱりVisual Studio Codeを使いたい。 input()だけ書き換えて、printと想定解を目でみて比較すればよいのだけど、 'Case' → 'CASE' ': ' → ':' あたりでWAになったこと…

Google Code Jam 2019 Qualification Round 全完でした

codingcompetitions.withgoogle.com Foregone Solution 任意の一例を構築すれば良いだけなので適当に。 T = int(input()) N = [input() for _ in range(T)] for i, n in enumerate(N): A = '' B = '' for d in n: if d=='4': A+='2' B+='2' else: A+=d B+='0…

整数問題で商にmath.ceilを使ってはいけない?

n/m以下の整数を使いたいときはn//mを使えばよいが,n/m以上の最小の整数に相当する演算子は存在しない. そこで,横着してmath.ceilを使うと,答えがずれることがある. ABC046 C - AtCoDeerくんと選挙速報 / AtCoDeer and Election Report atcoder.jp 誤り…

ABC-047C - 一次元リバーシ / 1D Reversi をpythonで解く

atcoder.jp リバーシにおいて同じ色の1個の石も2個の石も等価なので,まずは同じ色の並んだ部分を1個の石に置き換えると,あとは1個ずつひっくり返していくしかないのでその長さ-1が答えとなる. 解法1 np.diffを使う import numpy as np S=input() S=np.arr…

AtCoderのランク感

最近ちょこちょことAtCoderをやっている. 以下のblogでも引用されているように, kumagi.hatenablog.com 何度も言うけど競プロは向き不向きあるし、競プロ出来なくてもITエンジニアとしてやっていけるから、競プロ必須だとは思わない方がいいよ。ただ、「AB…

AtCoder Beginner Contest 122 Dを漸化式で解く

A-Cの3完.Dは解けず.64個書き出せば解ける,とは思ったのだがそこから手が進まず.動的計画法を使いこなせていない. 以下は解説を見てから.最後3桁についての場合の数で漸化式. 邪道かもしれないけど,正規表現を使うと場合分けが減って楽. import re,…