2023-10-24 貝印のピーラー (2回目) / ABC224 A, B, C, D
貝印のピーラーが届いた。なぜか家のピーラーがなくなったので買い直した。
AtCoder Beginner Contest 224
- A - Tires
https://atcoder.jp/contests/abc224/tasks/abc224_a
- 提出: https://atcoder.jp/contests/abc224/submissions/46904174
if s.ends_with("er") { "er" } else if s.ends_with("ist") { "ist" } else { unreachable!() };
- B - Mongeness
https://atcoder.jp/contests/abc224/tasks/abc224_b
- 提出: https://atcoder.jp/contests/abc224/submissions/46904358
- i_1, i_2, j_1, j_2 を指示通りにすべて試す
- C - Triangle?
https://atcoder.jp/contests/abc224/tasks/abc224_c
- 提出: https://atcoder.jp/contests/abc224/submissions/46905131
- 3 点が同一直線になるとき以外を数えれば良い
- D - 8 Puzzle on Graph
https://atcoder.jp/contests/abc224/tasks/abc224_d
- 提出: https://atcoder.jp/contests/abc224/submissions/46906435
- 状態数も遷移も少ない
- 状態ごとに最小の操作回数回数を保持する
- 初期状態から BFS で未遷移の状態に遷移していけば良い
- E - Integers on Grid
https://atcoder.jp/contests/abc224/tasks/abc224_e
- 未着手
- F - Problem where +s Separate Digits
https://atcoder.jp/contests/abc224/tasks/abc224_f
- 未着手
- G - Roll or Increment
https://atcoder.jp/contests/abc224/tasks/abc224_g
- 未着手
- H - Security Camera 2
https://atcoder.jp/contests/abc224/tasks/abc224_h
- 未着手
use std::collections::{HashMap, HashSet, VecDeque};
use proconio::{input, marker::Usize1};
fn main() {
input! {
m: usize,
uv: [(Usize1, Usize1); m],
p: [Usize1; 8]
};
let p = {
let set = p.iter().copied().collect::<HashSet<usize>>();
let none = (0..9).find(|i| !set.contains(i)).unwrap();
let mut v = vec![10; 9];
for (i, p_i) in p.into_iter().chain(std::iter::once(none)).enumerate() {
v[p_i] = i;
}
v
};
let mut map = HashMap::new();
let mut deque = VecDeque::new();
map.insert(p.clone(), 0_i64);
deque.push_back(p);
while let Some(p) = deque.pop_front() {
let count = map[&p];
for (u, v) in uv.iter().copied() {
if p[u] != 8 && p[v] != 8 {
continue;
}
let mut p = p.clone();
p.swap(u, v);
if map.contains_key(&p) {
continue;
}
map.insert(p.clone(), count + 1);
deque.push_back(p);
}
}
let ans = map.get(&(0..9).collect::<Vec<usize>>()).unwrap_or(&-1);
println!("{}", ans);
}
今日のコミット。
- kireta 1 commit
- rust-atcoder 1 commit