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

AtCoder Beginner Contest 247 B(2)

https://atcoder.jp/contests/abc247/tasks/abc247_b match m.get(&k.to_string()) { Some(n) => { let n1 = n + 1; m.insert(k.to_string(), n1) } None => m.insert(k.to_string(), 1) }; は、entryを使ってこう書けるんですね。 let e = m.entry(k.to_str…

AtCoder Beginner Contest 247 B

https://atcoder.jp/contests/abc247/tasks/abc247_bStringをHashMapのキーにするときには、to_string()をつけるとよいようです。 それから、 match m.get(&k.to_string()) { Some(n) => m.insert(k.to_string(), n + 1), None => m.insert(k.to_string(), 1…

AtCoder Beginner Contest 248 B

https://atcoder.jp/contests/abc248/tasks/abc248_b0からの無限列を出すときは、 0.. こうですね。 以下はpow関数を使っているのでやや効率が悪いですが。 // Slimes #![allow(non_snake_case)] use num_traits::pow; fn read<T: std::str::FromStr>() -> T { let mut line = Stri</t:>…

AtCoder Beginner Contest 249 B

https://atcoder.jp/contests/abc249/tasks/abc249_b大文字小文字判定は、is_uppercase/is_lowercaseです。 // Perfect String #![allow(non_snake_case)] use std::collections::HashSet; fn read<T: std::str::FromStr>() -> T { let mut line = String::new(); std::io::stdin()</t:>…

AtCoder Beginner Contest 250 B

https://atcoder.jp/contests/abc250/tasks/abc250_bあえてcharのMatrixみたいなのを作ってそれを表示します。 Matrixを作るには、Iterator::collectを二重に適用すればよいですね。 ただ、そうすると複雑な形になって読みにくいので、closureを使っています…

AtCoder Beginner Contest 251 B

https://atcoder.jp/contests/abc251/tasks/abc251_b use itertools::Itertools; として手元でコンパイルすると、 error[E0432]: unresolved import `itertools` --> ABC251B.rs:4:5 | 4 | use itertools::Itertools; | ^^^^^^^^^ maybe a missing crate `it…

AtCoder Beginner Contest 252 B

https://atcoder.jp/contests/abc252/tasks/abc252_bデバッグでHashSetをVecに変換しましたが、from_iterを使うと簡単です。 use std::iter::FromIterator; let w = Vec::from_iter(max_index_set.iter()); // Takahashi's Failure #![allow(non_snake_case)…

AtCoder Beginner Contest 253 B

https://atcoder.jp/contests/abc253/tasks/abc253_benumerateはこのようにするんですね。 for (i, s) in S.iter().enumerate() { ... } // Distance Between Tokens #![allow(non_snake_case)] //////////////////// library //////////////////// fn read<T: std::str::FromStr>(</t:>…

AtCoder Beginner Contest 254 B

https://atcoder.jp/contests/abc254/tasks/abc254_b let mut b = Vec::with_capacity(a.len() + 1); b.set_len(a.len() + 1); でVecのサイズを変えられそうですが、 error[E0133]: call to unsafe function is unsafe and requires unsafe function or bloc…

AtCoder Beginner Contest 255 B

https://atcoder.jp/contests/abc255/tasks/abc255_bf64でmax/minを取ろうとすると、 points.iter().map(|&point| pt.dist(&point)).min().unwrap() このように怒られます。 error[E0277]: the trait bound `f64: Ord` is not satisfied --> ABC255B2.rs:53:…

AtCoder Beginner Contest 256 B

https://atcoder.jp/contests/abc256/tasks/abc256_b降順のRangeはこうやるんですね。 (0usize..4).rev() // Batters #![allow(non_snake_case)] //////////////////// library //////////////////// fn read<T: std::str::FromStr>() -> T { let mut line = String::new(); std::i</t:>…

AtCoder Beginner Contest 257 B

https://atcoder.jp/contests/abc257/tasks/abc257_b文字列のjoinは普通にできるので、ToString traitを持つ型のVecを引数にする関数を作ってみました。 fn join<T: ToString>(v: &Vec<T>) -> String { v.iter().map(|x| x.to_string()).collect::<Vec<String>>().join(" ") } mutableな</vec<string></t></t:>…

AtCoder Beginner Contest 258 B(2)

https://atcoder.jp/contests/abc258/tasks/abc258_b全てのマスから全ての方向を計算して、そこまでのうち最大のものだけ残して、その方向に1歩進めるというのを繰り返します。 あまりうまくIteratorが使えずに、結局collectしてVecにしています。 // Number…