🐥
Rust ではじめる AtCoder
はじめに
本記事はRustユーザーがAtCoderで競技プログラミングに取り組む上で、有用だと思われる知識をまとめたものです。随時加筆していく予定です。
I/O
proconio
クレートを使用しましょう。複数回に分けて出力する場合は、main()
を #[fastout]
で修飾することを忘れないようにしましょう。[1]
「インタラクティブな問題」を解く際には注意が必要です。以下の解説が参考になります。
Rust のバージョンを指定する
ワークスペースに rust-toolchian.toml
を置くと、コンパイラや各種ツールを特定のバージョンに指定できます。必要であれば、components
の一覧 参照のしてください。
rust-toolchian.toml
[toolchain]
channel = "1.70.0"
components = [ "rustc", "cargo", "rust-analyzer", "clippy" ]
targets = []
profile = "default"
デバッグ
プリントデバッグ用のコードを残したまま提出して WA
してしまったことはありませんか? #[cfg(debug_assertions)]
マクロで修飾されたコードブロックは、リリーズビルドで無視されます。
#[cfg(debug_assertions)]
for i in 0..=n {
assert_eq!(factorial[i] * factorial_inv[i] % MOD, 1)
}
fn main() {
#[cfg(debug_assertions)]
println!("{}", brute_force())
}
#[cfg(debug_assertions)]
fn brute_force() {
todo!()
}
ハッシュ
rustc-hash
クレートで提供されている FxHashSet
FxHashMap
は標準ライブラリで提供されているそれよりも高速です[2]。
Discussion