Memo

Twitterに書くには長すぎることを書きます。Opinions are my own.

std::next_permutationで全ての組み合わせを使う場合は、事前にソートすること

AtCoder

ABC 073 D joisino's travel

D - joisino's travel

N<=200 なので、ワーシャルフロイド法 O(n3) で2点間の最短経路をすべて求められる。その後、r_1, ... , r_R までの順列を std::next_permutation で用意して、順列ごとに距離を計算すればOK。R<=8なので、順列の数は多くても 8! = 40320 で充分計算が間に合う。ここまではできたけど Wrong Answer。

Submission #2894591 - AtCoder Beginner Contest 073

std::next_permutationは、最初に昇順ソートしておかないと全ての組み合わせが出ないまま終わる、ということに気付かず時間を浪費した。要は、マニュアルを良く読め、という話。

Submission #2894598 - AtCoder Beginner Contest 073