2023-03-24 ABC278 の A, B, C, D を解いた
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!(),
}
}
}
今日のコミット。