メモやらログやら

考えたこととかメモする

AtCoder過去問

CODE FESTIVAL 2017 qual B:C - 3 Steps

最近キョウプロを初めて一か月ぐらいで購入してすぐに投げた蟻本をやり直していて、2部グラフをやったので問題を探して挑戦した。 問題読んだけれども2部グラフどこで使うんだろうってなった。 解説読むとすごい分かりやすかったが、偶数個離れたところに…

ABC44-C

以前解いたときは、i番目までのカードの中からj枚カードを選択するとして、i番目をj枚目として選ぶときに合計がj*AになるものをDPで数え上げた。が、このやり方だと3次元配列になってややこしいので2次元で何とかしたかった。 prd_xxxさんの解答が行数少…

ABC67-D

・相手の取得するマス目を減らすように行動する→相手よりそのマス目に近ければ取得できる ・DFSするときは再帰の回数を増やしておく(いつも上限に達してRE出てから気が付くので気を付ける) atcoder.jp

CODE FESTIVAL 2016 Final-C

問題は人のグラフを言語のグラフ(辺?)を使って全員をつなげるか、みたいな感じでUnionFindですべて同じUnionにできるかどうかなどで判断できると考えた。 今回は愚直に人を言語の辺でつないでいった。最初はdequeを使っていたが、dequeを使っても何度も何…

ABC141-D

その時最大の値を //2 すればいいよね→とすると計算量がO(NM)で解けなくね? っとなって死んだ。 毎回最大や最小の値が必要な場合、優先度付きキュー(pythonだとheapq)があるのでこれを使えばいいことが分かっていれば瞬殺できる問題だった。 heapqは子が…

エイシング プログラミング コンテスト 2019-C

最近300~500点問題でDificultyが1000~ぐらいの問題を一日2問解くみたいなチャレンジをやっていて、毎日学びがある。python高速化周りの記事を書こうかなとも思ったのだけど、タイトルの問題で結構感動したのでこの問題について記録しておく。 最初の提出はこ…

ABC105-D

お菓子の個数の累積和をとっておいて、lとrを動かして、累積和の差分のmod Mが0になるなら、均等にお菓子を分けられるのは気が付いたので愚直に2重forループでやってTLE。データ数的にTLEになるのは分かっていたけど atcoder.jp で、そこからうまいこと計算…

pythonでキーの有無を調べるときはgetよりin {dict} の方が高速っぽい

in ~~ でやると100msだけ早くなったがまだ遅い。collectionsとか使う方がいいのだろうか atcoder.jp

ABC137-D

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

ABC116-D

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

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

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

ABC34-C

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

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

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

ABC45-C

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

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

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

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を適当に並べた数字を作るか。でもその方法が分か…

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 で学んだこと

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