ABC278 : AtCoder Beginner Contest 278 の A, B, C, D を解いた。
F を解こうとしたが、 E でハマってしまって解けなかった。
- A - Shift
https://atcoder.jp/contests/abc278/tasks/abc278_a
- 提出: https://atcoder.jp/contests/abc278/submissions/39992596
- 指示通りにシミュレートすれば良い
- B - Misjudge the Time
https://atcoder.jp/contests/abc278/tasks/abc278_b
- 提出: https://atcoder.jp/contests/abc278/submissions/39992802
- 1 分ずつ進めて指示通りに確かめれば良い
- C - FF
https://atcoder.jp/contests/abc278/tasks/abc278_c
- 提出: https://atcoder.jp/contests/abc278/submissions/39992962
N <= 10^9
なので HashMap と HashSet で管理する- あとは指示通りにシミュレートすれば良い
- D - All Assign Point Add
https://atcoder.jp/contests/abc278/tasks/abc278_d
- 提出: https://atcoder.jp/contests/abc278/submissions/39993552
- 1 のクエリを単純にやると間に合わない
- 1 のクエリごとに HashMap と既定値をリセットし、 2 のクエリでは HashMap に追加すれば良い既定値 + x で
use std::collections::HashMap; use proconio::{input, marker::Usize1}; fn main() { input! { n: usize, a: [usize; n], q: usize, }; let mut base = 0_usize; let mut map = HashMap::new(); for (i, a_i) in a.iter().copied().enumerate() { map.insert(i, a_i); } for _ in 0..q { input! { t: usize, } match t { 1 => { input! { x: usize, } base = x; map.clear(); } 2 => { input! { i: Usize1, x: usize, } *map.entry(i).or_insert(base) += x; } 3 => { input! { i: Usize1, } println!("{}", *map.get(&i).unwrap_or(&base)); } _ => unreachable!(), } } }
今日のコミット。