bouzuya/firestore-path 0.3.0 をつくった。
Error
を追加した。
enum
で公開していたものを pub struct Error(/* private fields */);
に変更した。内部的には enum ErrorKind {...}
を struct Error(ErrorKind)
の形で持っている。
std::io::ErrorKind
の形にならってみた。
https://doc.rust-lang.org/std/io/enum.ErrorKind.html
ABC330 トヨタシステムズプログラミングコンテスト2023(AtCoder Beginner Contest 330)
- C - Minimize Abs 2
https://atcoder.jp/contests/abc330/tasks/abc330_c
- 提出: https://atcoder.jp/contests/abc330/submissions/48659670
- 各
x
に対して最適なy
を求めていけば良い x^2+y^2
の D 前後の値を求めれば良いのでありえるx
は√D
くらいまでなので間に合う
- D - Counting Ls
https://atcoder.jp/contests/abc330/tasks/abc330_d
- 提出: https://atcoder.jp/contests/abc330/submissions/48660550
- 4 方向の L を試す
- それぞれ累積和をあらかじめ求めておけば間に合う
use proconio::{input, marker::Chars}; fn main() { input! { n: usize, s: [Chars; n], }; let mut rows = vec![vec![0; n + 1]; n]; for i in 0..n { for j in 0..n { rows[i][j + 1] = rows[i][j] + if s[i][j] == 'o' { 1 } else { 0 }; } } let mut rrows = vec![vec![0; n + 1]; n]; for i in 0..n { for j in (0..n).rev() { rrows[i][j] = rrows[i][j + 1] + if s[i][j] == 'o' { 1 } else { 0 }; } } let mut cols = vec![vec![0; n]; n + 1]; for j in 0..n { for i in 0..n { cols[i + 1][j] = cols[i][j] + if s[i][j] == 'o' { 1 } else { 0 }; } } let mut rcols = vec![vec![0; n]; n + 1]; for j in 0..n { for i in (0..n).rev() { rcols[i][j] = rcols[i + 1][j] + if s[i][j] == 'o' { 1 } else { 0 }; } } // for i in 0..=n { // for j in 0..n { // print!("{} ", rcols[i][j]); // } // println!(); // } let mut ans = 0_usize; // tl for i in 0..n { for j in 0..n { if s[i][j] != 'o' { continue; } ans += (rows[i][n] - rows[i][j + 1]) * (cols[n][j] - cols[i + 1][j]); } } // tr for i in 0..n { for j in 1..n { if s[i][j] != 'o' { continue; } ans += (rrows[i][0] - rrows[i][j]) * (cols[n][j] - cols[i + 1][j]); } } // br for i in 1..n { for j in 0..n { if s[i][j] != 'o' { continue; } ans += (rrows[i][0] - rrows[i][j]) * (rcols[0][j] - rcols[i][j]); } } // bl for i in 1..n { for j in 0..n { if s[i][j] != 'o' { continue; } ans += (rows[i][n] - rows[i][j + 1]) * (rcols[0][j] - rcols[i][j]); } } println!("{}", ans); }
今日のコミット。
- rust-atcoder 1 commit
- firestore-path 2 commits