ABC035 : Rust練習編
http://abc035.contest.atcoder.jp/
唐突にRustでAtcoderの問題を解くことを始めたのでブログに感想を書いてみることにしました。処理系をダウンロードしたのは昨日なので全く初心者であることに留意して下さい。
A: テレビ
なぜかcommon lispで解きました。
(format t "~A~%" (if(equal(* 3(/ (read) 4))(read)) "4:3" "16:9"))
B: ドローン
クエリ1なら?の数をマンハッタン距離に足します。クエリ2なら?の数を引いて、マイナスかつ絶対値が奇数なら1です。
C: オセロ
累積和アルゴリズムを拡張した「いもす法」が使えます(いもす法の詳細はいもすさんのページにくわしく書いてあります)。
D:行く街は一箇所でOK。二回ダイクストラをして行きの時間、帰りの時間を頂点ごとに求め最大値を取ります。
ダイクストラ法のオーダーを落とすのに使う優先順位つきキューは、標準ライブラリにある二分ヒープを使いました。公式にダイクストラ法の実装つきで使い方が載っています(コード中にURLがあります)。
ほぼコードを貼っただけですが、疲れたので今日のところはこれだけ。
パターンを使いこなしてスマートに書けるようにしたいなあ、という感じです。