2022-09-01から1ヶ月間の記事一覧

AtCoder Beginner Contest 263 C

https://atcoder.jp/contests/abc263/tasks/abc263_ccombinationsを使うだけですね。 // Monotonically Increasing #![allow(non_snake_case)] use itertools::Itertools; fn read<T: std::str::FromStr>() -> T { let mut line = String::new(); std::io::stdin().read_line(&mut </t:>…

AtCoder Beginner Contest 264 C

https://atcoder.jp/contests/abc264/tasks/abc264_cどうしてもインデックスベースになりますね。 // Matrix Reducing #![allow(non_snake_case)] use itertools::Itertools; type Matrix<T> = Vec<Vec<T>>; fn read<T: std::str::FromStr>() -> T { let mut line = String::new(); std::io::</t:></vec<t></t>…

AtCoder Beginner Contest 265 C

https://atcoder.jp/contests/abc265/tasks/abc265_cこういう問題はOptionを使うとよいようです。1行が少し長くなりますが。 あと、Rustにはloopというキーワードがあるんですね。 // Belt Conveyor #![allow(non_snake_case)] use std::collections::HashSe…

AtCoder Beginner Contest 266 C

https://atcoder.jp/contests/abc266/tasks/abc266_c各点が凸であることを調べるだけですね。 // Convex Quadrilateral #![allow(non_snake_case)] use std::ops::Sub; fn read<T: std::str::FromStr>() -> T { let mut line = String::new(); std::io::stdin().read_line(&mut lin</t:>…

AtCoder Beginner Contest 267 C

https://atcoder.jp/contests/abc267/tasks/abc267_cどうしてもusizeとi64の変換が必要な問題なのでめんどうですね。 // Index × A(Continuous ver.) #![allow(non_snake_case)] use std::cmp::max; fn read<T: std::str::FromStr>() -> T { let mut line = String::new(); std::io</t:>…

AtCoder Beginner Contest 268 C

https://atcoder.jp/contests/abc268/tasks/abc268_b剰余の頻度を集計していますが、めんどうですね。 // Chinese Restaurant #![allow(non_snake_case)] fn read<T: std::str::FromStr>() -> T { let mut line = String::new(); std::io::stdin().read_line(&mut line).ok(); line</t:>…

AtCoder Beginner Contest 269 C

https://atcoder.jp/contests/abc269/tasks/abc269_cABCのC問題を解いていきます。Pythonだとgeneratorを使ってこんな感じで書けますが、 def gen_submask(N, L): if L == 1: yield 0 if N == 1: yield 1 else: L1 = L / 2 L2 = L - L1 ns1 = list(gen_subma…

AtCoder Beginner Contest 268 B

https://atcoder.jp/contests/abc268/tasks/abc268_b部分文字列はこんな感じで取れるようです。 let sub = &T[..S.len()]; // Prefix? #![allow(non_snake_case)] fn read<T: std::str::FromStr>() -> T { let mut line = String::new(); std::io::stdin().read_line(&mut line).ok</t:>…

AtCoder Beginner Contest 236 B

https://atcoder.jp/contests/abc236/tasks/abc236_benumerateは、本当はindexと値の参照のタプルを返します。 // Who is missing? #![allow(non_snake_case)] fn read<T: std::str::FromStr>() -> T { let mut line = String::new(); std::io::stdin().read_line(&mut line).ok();</t:>…

AtCoder Beginner Contest 237 B

https://atcoder.jp/contests/abc237/tasks/abc237_btypeを使うと型のaliasを作ることができます。 type Matrix<T> = Vec<Vec<T>>; std::str::FromStrの逆のTraitはstd::string::ToStringなんですね。 // Matrix Transposition #![allow(non_snake_case)] fn read<T: std::str::FromStr>() -></t:></vec<t></t>…

AtCoder Beginner Contest 238 B

https://atcoder.jp/contests/abc238/tasks/abc238_bソートして差を取るだけですが、最後に360を付ける必要がありますね。 // Pizza #![allow(non_snake_case)] fn read<T: std::str::FromStr>() -> T { let mut line = String::new(); std::io::stdin().read_line(&mut line).ok()</t:>…

AtCoder Beginner Contest 239 B

https://atcoder.jp/contests/abc239/tasks/abc239_b余りと同じで商もPythonならそのままなのですが。 // Integer Division #![allow(non_snake_case)] use std::collections::HashSet; fn read<T: std::str::FromStr>() -> T { let mut line = String::new(); std::io::stdin().re</t:>…

AtCoder Beginner Contest 240 B

https://atcoder.jp/contests/abc240/tasks/abc240_bTraitの指定にwhereを使うとちょっときれいに書けます。 // Count Distinct Integers #![allow(non_snake_case)] use std::collections::HashSet; fn read<T: std::str::FromStr>() -> T { let mut line = String::new(); std::i</t:>…

AtCoder Beginner Contest 241 B

https://atcoder.jp/contests/abc241/tasks/abc241_bHashMapの値を変えるには、get_mutとメソッドを使うんですね。 // Pasta #![allow(non_snake_case)] use std::collections::HashMap; fn read<T: std::str::FromStr>() -> T { let mut line = String::new(); std::io::stdin().r</t:>…

AtCoder Beginner Contest 242 B

https://atcoder.jp/contests/abc242/tasks/abc242_bソートするだけですね。 // Minimize Ordering #![allow(non_snake_case)] fn read<T: std::str::FromStr>() -> T { let mut line = String::new(); std::io::stdin().read_line(&mut line).ok(); line.trim().parse().ok().unwr</t:>…

AtCoder Beginner Contest 243 B

https://atcoder.jp/contests/abc243/tasks/abc243_bHashSet同士のintersectはHashSetなんですね。 // Hit and Blow #![allow(non_snake_case)] use std::collections::HashSet; fn read<T: std::str::FromStr>() -> T { let mut line = String::new(); std::io::stdin().read_line</t:>…

AtCoder Beginner Contest 244 B

https://atcoder.jp/contests/abc244/tasks/abc244_b位置と方向をセットにすると簡単です。 // Go Straight and Turn Right #![allow(non_snake_case)] use std::ops::Add; fn read<T: std::str::FromStr>() -> T { let mut line = String::new(); std::io::stdin().read_line(&mut</t:>…

AtCoder Beginner Contest 266 B

https://atcoder.jp/contests/abc266/tasks/abc266_bPythonなら剰余そのままですが、RustはC++との互換性のためか被除数が負だと負になってしまうんですねえ。 // Modulo Number #![allow(non_snake_case)] fn read<T: std::str::FromStr>() -> T { let mut line = String::new(); </t:>…

AtCoder Beginner Contest 267 B

https://atcoder.jp/contests/abc267/tasks/abc267_b効率が悪いですが、順番を追ってやれば問題ないですね。 // Split? #![allow(non_snake_case)] fn read<T: std::str::FromStr>() -> T { let mut line = String::new(); std::io::stdin().read_line(&mut line).ok(); line.trim(</t:>…

AtCoder Beginner Contest 245 B

https://atcoder.jp/contests/abc245/tasks/abc245_bread_setを書いてみましたが、たくさんTraitが要りますね。 // Mex #![allow(non_snake_case)] use std::collections::HashSet; fn read<T: std::str::FromStr>() -> T { let mut line = String::new(); std::io::stdin().read_l</t:>…

AtCoder Beginner Contest 246 B

https://atcoder.jp/contests/abc246/tasks/abc246_b最初からf64にすれば楽ですね。 // Get Closer #![allow(non_snake_case)] use itertools::Itertools; use std::collections::HashSet; fn read<T: std::str::FromStr>() -> T { let mut line = String::new(); std::io::stdin()</t:>…