2024-03-07 AtCoder Daily Training EASY 2024/03/07 20:30start
AtCoder Daily Training EASY 2024/03/07 20:30start
- A - Median?
https://atcoder.jp/contests/adt_easy_20240307_3/tasks/abc253_a
- 提出: https://atcoder.jp/contests/adt_easy_20240307_3/submissions/50976729
- ソートして中央の値と b を比較して一致していれば Yes
- B - Weak Beats
https://atcoder.jp/contests/adt_easy_20240307_3/tasks/abc323_a
- 提出: https://atcoder.jp/contests/adt_easy_20240307_3/submissions/50976776
- 2..=16 を 1 個飛ばしで読んですべて '0' なら Yes
- C - Hard Calculation
https://atcoder.jp/contests/adt_easy_20240307_3/tasks/abc229_b
- 提出: https://atcoder.jp/contests/adt_easy_20240307_3/submissions/50976865
- 下の桁から順に、足してみてすべて 10 未満なら Easy
- D - CTZ
https://atcoder.jp/contests/adt_easy_20240307_3/tasks/abc336_b
- 提出: https://atcoder.jp/contests/adt_easy_20240307_3/submissions/50976896
n.trailing_zeros()
- E - Ameba
https://atcoder.jp/contests/adt_easy_20240307_3/tasks/abc274_c
- 提出: https://atcoder.jp/contests/adt_easy_20240307_3/submissions/50977421
- 頂点ごとの辺を保持しておき、 a を走査して辺を張っていく
- 最後に DFS で深さを調べて、それらを出力する
use proconio::input;
fn dfs(edges: &[Vec<usize>], depth: &mut Vec<usize>, u: usize, p: usize, l: usize) {
depth[u] = l;
for v in edges[u].iter().copied() {
if v == p {
continue;
}
dfs(edges, depth, v, u, l + 1);
}
}
fn main() {
input! {
n: usize,
a: [usize; n],
};
let mut edges = vec![vec![]; 4 * n];
for (i, a_i) in a.iter().copied().enumerate() {
let i = i + 1;
edges[a_i].push(2 * i);
edges[2 * i].push(a_i);
edges[a_i].push(2 * i + 1);
edges[2 * i + 1].push(a_i);
}
let mut depth = vec![0; 4 * n];
dfs(&edges, &mut depth, 1, 1, 0);
for k in 1..=2 * n + 1 {
println!("{}", depth[k]);
}
}
今日のコミット。
- firestore-path 2 commits
- serde-firestore-value 2 commits
- rust-atcoder 1 commit