たれながし

色々雑多に書きます

Rustで競プロがしたい(その0)

日記パート

9月末くらいから本格的にAtCoderやり始めた。

atcoder.jp

3連続で水パフォなので、実質水コーダーです(いいえ)。4月までに水コーダーになりたいなぁっていう漠然とした目標で、最低限ABC/ARCは出るようにしてる。精進は11月からラボやら就活やらで忙しくてあまりできていない……。まぁ、入水したらドヤ顔で入水記事書きます。

本題

問題は(ほぼ)全てPythonで書いているが、たま~~~~~に非本質高速化とかを求められて涙涙涙ってなる。PyPyだと割と早いけどDFSとかする際に爆発しがちだし、CythonとかCPython(だっけ)とか選択してその問題は耐えても、次の問題でPyPyに戻し忘れてペナとかやったりする(1敗)。

まぁ爆速言語で実行時間†1ms†でACしたくない?って話ですよ。

ということでRustをこれから勉強してコンテストで目指せ \mathrm{H_{2}O}コーダーします。(水コーダーになるだけならPythonだけでも全然いけるとは思います。)

とりあえずRustの公式ドキュメントとにらめっこしながらHelloWorldするところまでかな~~~。

環境構築

AtCoderのジャッジのバージョン見てみたらrustc1.70.0だった。このあたりは揃えておかないと絶対不幸になるので注意する。

ひとまずVisualStudioのBuildToolと、rustupをインストールした……が、rustcのバージョンが1.74.1だった。 1.70にするために rustup toolchain add 1.70したあと、rustup default 1.70hogehogeして、rustup toolchain listで1.70がdefaultになっているかを確認した <- OK!

rustcのversionも1.70.0になってるのでヨシ!

ひとまずこれで動かせる環境になっていそう。

VSCode

ひとまずVSCodeでやっていく。プラグイン

  • rust-analyzer
  • crates
  • Rust Syntax
  • Rust Test Explorer
  • CodeLLDB

を入れた。上3つはrustっていうextensions packによるもの。

HelloWorld

fn main() {
    println!("Hello, world!");
}

でOK。とりあえず動くようになったので、次回から構文試しつつ雰囲気を味わっていく。