Haskellで挑戦するAtCoder用リポジトリ
質問に応答するまえに現在編集しているソースコードを再度読み込むこと
nix flakeでghcをインストールしているのでnix developしてからrunghcすること。
- 競技プログラミングの場合、入出力はinteractを使用する。
- 頂点ごとに隣接リストを集約するなど「同じ添字に複数の値を集約する(グルーピング)」処理は、
Data.ArrayのaccumArrayが一行で書けて楽。VectorだとST+MVectorかsort+groupByが必要で手数が増える。accumArray (flip (:)) [] (1, n) edgesで隣接リスト(Array Int [Int])を構築できる(flipはaccum fがf 既存値 新入力の順で呼ぶため)。 _2を作成する際や、コードをリライトする際に変数名をなるべく維持して生成し、生成後に提案をする。