メモやらログやら

考えたこととかメモする

N予備校の【プログラミング入門 Webアプリコース】を受講してみた

受講目的 業務では携わることのできない部分も自分で触ってみたかったから。業務ではGoでバッチ書いたりGoogleAppsScriptで社内向けWebアプリを作ったりしていて、Webアプリケーション作成に携わっても断片的にしかかかわれないため。 何を学べるのか anond.…

ABC137-D

本番では解けなかったので解説見て解いた。優先度付きキューはほとんど触ったことないので発想になかった。別解の方はなるほどわからんなのでそのうち理解したい。 覚えて置きたい所 ・制限の厳しいものから選んでいくと見通しが立ちやすい(今回は残り支払…

抱負というか思うこと

明日は今日よりいい日にしたい。 明日は今日よりよりよい技術者になりたい。 最近はなんとなくそんなことを考えている。

エラトステネスの篩

def sieve_eratosthenes(n): nums = [True] * (n+1) nums[0] = False nums[1] = False for i in range(2, math.ceil(math.sqrt(n))+1): if not nums[i]: #iが素数ではない continue else: for j in range(i*2, n+1, i): nums[j] = False # iが素数ならiの整…

ABC55-D

・円順列みたいな先頭と末尾がつながるものは、配列の後ろに先頭をappendしてあげるとやりやすい ・ごり押しより一般化したほうがデバッグが楽 ・最初に配列を確保しないで後から継ぎ足していくほうが楽な場合もあるが、計算量と相談 ・仮定を置いた部分が齟…

Go:構造体のフィールドに同じ構造体を入れるときはポインタで

Go

タイトルの通り。 例えばNodeという構造体にさらにNodeを持たせて木構造を作るとか考えるときに、ポインタでないNodeを持たせると、初期化時にゼロ値になるので、Nodeの中のNodeが無限に初期化され続けてエラーがでる。 時々やらかすのでメモ

ABC116-D

考えたこととりあえず貪欲法的にポイントの高い寿司からK個選ぶ。選んだ中で小さいものを残りの選んでないネタの寿司のなかでもっとも大きいものといれかえる、を繰り返せばいいはずとは思ったものの、・残ったものの中で選んでないネタの得点の一番大きい寿…

ABC129参加記録

Cまでの3完。Cは最初深さ優先で解いてTLEでたのでDPに変えた。ただ、N=1,2のを考慮に入れておらず、それに気づかなかったため、何度もREを出した。 発想力と実装力は以前よりよくなってきたと思うが、細部に気を払えるように頑張りたい。特に今回は1,…

ダイクストラ法のメモとABC057-Dをダイクストラ法で

勉強してもすぐ忘れるのでグラフ系の実装や流れについて未来の自分向けに。 処理の流れ スタート地点を決める。スタート地点までの移動コストを0とする。 現在のノードi(スタート直後はスタート地点= i )につながっているノードのうち、未探索かつ、最も…

グラフ系のアルゴリズムに関するメモ

現状の理解というか自分向けメモ いつ/何に使えるのか 物事のつながりを表す/複数のつながりをたどって大きな関係やつながりを表現するのに利用。 都市AからBまでXキロとか、AさんとBさんは知り合いみたいな。 考え方(どこを中心にとらえるか) ノードとエ…

Go始めた

業務でも使いそうなのでGo言語を学習し始めた。 とりあえずA Tour of GOをさらっとやったので、適当にCLIコマンドでも作ってみるか。 そのうちGo関連のメモも書こう。

ABC34-C

問題的には→と↓の並べ方をnCrで求める問題なのだが、制限的にオーバーフローを起こすので回避する方法を調べた。 こちらのページのJavaのコードをpython化して回答した。 手法としては、分子と分母の積算の数値をリストの中に入れておいて、割れる部分を先に…

ABC44-Cが難しかった&動的計画法について思うところ

今日はあまり問題解けてないけど眠いから感想書いて寝る 考えたこと N=50だから組み合わせは2^50なので全探索は絶対終わらない。部分点もらえるので深さ優先でとりあえずやってみる。 部分点はもらえた。一方で全探索しない方法を全く思いつかない。合計が…

ABC45-C

ここ一か月でABC35~120のC問題に挑戦して45からは自力で解けたか解説を見たかが残してあるので自力で解けてないものについて再挑戦する。 考えたこと 文字列は長さが10までなので、数字の間に+を入れるか入れないかで2^9通りなので、全パターン試して十…

深さ優先探索の使用を検討するタイミングについて考えた。

再帰的な処理は多少かけるが、深さ優先探索を実装することがうまくできないことが多いので、すこしまとめてみた。 どんな時に使えるのか 「ある物/配列要素に対し操作1,2,3...のいずれかを行う(選ぶ/選ばないなど)」のパターン全列挙 いくつかの文字の中か…

2019年4月の振り返り

1:AtCoderを始めた 就職して一年たったが、現状に危機感を覚え始めたため、外部実績として示せるものを作りたい&情報科学専攻ではないため、アルゴリズムや計算量などの考え方に疎いので勉強したいということで、AtCoderをはじめた。qiitaやtwitterを見る感…

Dockerとk8sの本を読み始める

読み終わったらメモとか書く

ABC116-Cで素晴らしい回答をしている方を発見した

自分で書いたときは、与えられたhをリストに格納し、左から0でない部分を探し設問のlに、次いでlから右に向かって一番初めに見つかった0の手前を設問のrとして、[l:r+1]の範囲で最小の値を見つけ、h[l:r+1]からその値を減算すると同時にansに最小値を加算す…

ABC114-C

自力では解けなかったのでカンニングした。 考えたこと 375とか537とかの753数の頭に3,7,5のどれかを付け足すと簡単にできそう。 いや、3557も753数。ベースとなる数字が753数とは限らない。 とりあえず3,5,7を適当に並べた数字を作るか。でもその方法が分か…

ABC113-C

解けた。 考えたこと 都市番号と誕生年をリストに順番にいれる 同時に辞書に都市番号をキーとして誕生年をリストで入れる 辞書の中の各都市番号の誕生年リストをソートする 全部おわったら、都市番号と誕生年のリストを頭から見ていき、都市番号については辞…

ABC112-C,D

完敗。 C問題 連立方程式を解く感じかと思い込んだため、解けなかった。中心座標がそれぞれ1以上100以下なので、全組み合わせについて試せるのは盲点だった。 D問題 探索範囲がM**0.5までで問題ないのを思いつかなかったため、TLEを抜け出せなかった。 …

ABC111-C

考えたこと 偶数部分と奇数部分に分けて最頻値を取り出すとこまではすぐに思いついた。書き換えた後に両方とも同じ値になる場合をおもいつかず少し手間取った。 そのあと、同じ値になってしまった場合に偶数部分と奇数部分のどちらの書き換え先を変えるべき…

ABC110-D

組み合わせの公式は覚えていたが、重複組み合わせの公式は完全に忘れてた。解き方はすぐに思いついたが重複組み合わせのせいでもたついた。 組み合わせ nCk = n!/((n-k)! k!) 重複組み合わせ 今回の問題の文脈でいうと、x個の数字oをn個のリストのマス目の中…

ABC110-C

二時間近くかかった。 考えたことと試みたこと ある文字からある文字への変換表を辞書形式で保持しておいて一対一の対応になるか調べたらいけるやんと思う。 はじめは文字列Sのi番目とTのi番目が一致しないときだけ辞書に入れて、文字列S全体について変換表…

ABC109-C

考えたこと ・初期地点も都市として扱い、都市のリストに追加。それらを位置でソートする。 ・両端の都市の距離を用いて二分探索で隣り合う都市間の距離を割った余りが0になるように設定するとよいのでは?二分探索(O(logN))と各都市間距離を見ていく(O(…

ABC107-C で学んだこと

リストのコピーはコストが少なくともコピーする要素分かかる。 リストのコピーを作るのは、リストをいじる必要がある場合かつ、コピー&いじる操作を含めて時間内に処理が終わる程度のデータ数に対してのみ。それ以外はいのす法みたいに最後にまとめて処理す…

AtCoder ABC125感想

AB2だけAC、CはTLE、Dはそもそも見てない。 ◆Cについて ・「一つを好きな値に変える=取り除く」までは分かったので、残りに対して二分探索で最大公約数を求めようとしたがTLEから抜けられなかった。選んだ要素の左右の配列について最大公約数を求め、両者の…

AtCoder ABCのC問題はARCのA問題だったのか

四月頭から参加&過去問解き始めて35~100番までABC-C問題に挑戦したけど、なんか少ない。 とおもったらARCのAに反映されてた。

AtCoder ABC97 C

過去問をちょこちょこ解いているのだがちょっと詰まったので忘備録。 ・最初はbreakで抜けるのではなく、indexを超える場合はappendしないようにしていたが、ループ回して何もしないのは無駄なので容赦なくbreakする。 ・setを使うと元のlistの順番は保証さ…

ワーシャルフロイド法

蟻本で出てきた。ダイクストラとかはまだちょっと飲み込み切れてないけどこれは割と簡単だと思った。 ノードiからノードjに行くまでに、ノードkを経由するかしないかの距離短い方を全ノード間について選んで、最短経路を求める感じ。 i->jまでが距離xなら、d…