2020-10-01から1ヶ月間の記事一覧

DPを納得したい

DPというのは不思議で、ただ適当に配列をループで回しているだけに見えても難しい問題を解決してくれていたりします。 実際に解決できているのだから、間違っていることはないのでしょうが、直感的に正しいとはとても思えません。 最近、DPは効率のいい全探…

全域木と最小全域木

全域木とは あるグラフがあったとき、そのグラフの全ての頂点といくつかの辺を使って作られた新たなグラフが連結で閉路を持たないとき、新たなグラフを元のグラフの全域木という。 最小全域木 辺がコストを持つとき、コストの総和が最小の全域木を最小全域木…

ABC140 C Maximal Value

問題リンク 考察 数列 の和を最大化したいので、できるだけ全ての を に近づけたい。 として問題なさそう。 については が を上回らないのなら が を上回るのなら とすると辻褄を合わせたまま最大化できそう。 こんな感じで数列 を後ろから見て行って数列 を…

コードの折り畳み

Vim

範囲を選択して zf で折り畳み作成 折り畳み内で zo で展開、 zc で再度折り畳み zdで折り畳みの削除 zO で折り畳みを削除して展開

C++テンプレートのメモ

C++

struct reporter { reporter() { cout << "construct" << endl; } ~reporter() { cout << "destruct" << endl; } reporter(const reporter &) { cout << "copy" << endl; } reporter(reporter &&) { cout << "move" << endl; } reporter &operator =(const r…

sqrt(N)の素因数分解

コード vector<uint64_t> prime_factor(uint64_t n) { vector<array<uint64_t, 2>> ret; for (uint64_t i = 2; i * i <= n; ++i) { if (n % i) continue; uint64_t cnt = 0; while (n % i == 0) { n /= i; ++cnt; } ret.push_back({ i, cnt }); } if (n != 1) ret.push_back({ n, 1 }); re</array<uint64_t,></uint64_t>…