提出 #43280533


ソースコード 拡げる

use proconio::{input, marker::Chars};

fn main() {
    input! {
        s: [Chars; 4],
    }

    let (h, w) = (4, 4);
    let to_bit = |i: usize, j: usize| -> usize { 1 << (i * w + j) };
    let grid = {
        let mut grid = 0_usize;
        for i in 0..h {
            for j in 0..w {
                if s[i][j] == '#' {
                    grid |= to_bit(i, j);
                }
            }
        }
        grid
    };

    let mut dp = vec![std::f64::MAX; 1 << (h * w)];
    dp[0] = 0_f64;
    for s in 0..(1 << (h * w)) {
        for i in 0..h {
            for j in 0..w {
                let mut ps = vec![];

                let dir = vec![(-1, 0), (0, -1), (0, 0), (0, 1), (1, 0)];
                for (dr, dc) in dir.iter().copied() {
                    let (nr, nc) = (i as i64 + dr, j as i64 + dc);
                    if !(0..h as i64).contains(&nr) || !(0..w as i64).contains(&nc) {
                        continue;
                    }
                    let (nr, nc) = (nr as usize, nc as usize);
                    if (s & to_bit(nr, nc)) == 0 {
                        continue;
                    }

                    ps.push(s ^ to_bit(nr, nc));
                }

                if ps.is_empty() {
                    continue;
                }

                dp[s] = dp[s].min(
                    ps.iter().copied().map(|p| dp[p]).sum::<f64>() / ps.len() as f64
                        + dir.len() as f64 / ps.len() as f64,
                );
            }
        }
    }

    let ans = dp[grid];
    println!("{}", ans);
}

提出情報

提出日時
問題 K - 的あて
ユーザ bouzuya
言語 Rust (1.42.0)
得点 6
コード長 1567 Byte
結果 AC
実行時間 90 ms
メモリ 2604 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 6 / 6
結果
AC × 4
AC × 44
セット名 テストケース
Sample sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt
All max.txt, random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06.txt, random_07.txt, random_08.txt, random_09.txt, random_10.txt, random_11.txt, random_12.txt, random_13.txt, random_14.txt, random_15.txt, random_16.txt, random_17.txt, random_18.txt, random_19.txt, random_20.txt, random_21.txt, random_22.txt, random_23.txt, random_24.txt, random_25.txt, random_26.txt, random_27.txt, random_28.txt, random_29.txt, random_30.txt, random_31.txt, random_32.txt, random_33.txt, random_34.txt, random_35.txt, random_36.txt, random_37.txt, random_38.txt, random_39.txt, sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt
ケース名 結果 実行時間 メモリ
max.txt AC 87 ms 2552 KiB
random_01.txt AC 85 ms 2484 KiB
random_02.txt AC 84 ms 2456 KiB
random_03.txt AC 89 ms 2484 KiB
random_04.txt AC 84 ms 2484 KiB
random_05.txt AC 85 ms 2560 KiB
random_06.txt AC 84 ms 2512 KiB
random_07.txt AC 85 ms 2468 KiB
random_08.txt AC 85 ms 2496 KiB
random_09.txt AC 85 ms 2476 KiB
random_10.txt AC 86 ms 2460 KiB
random_11.txt AC 84 ms 2400 KiB
random_12.txt AC 83 ms 2600 KiB
random_13.txt AC 85 ms 2464 KiB
random_14.txt AC 86 ms 2536 KiB
random_15.txt AC 88 ms 2416 KiB
random_16.txt AC 86 ms 2472 KiB
random_17.txt AC 85 ms 2412 KiB
random_18.txt AC 85 ms 2428 KiB
random_19.txt AC 85 ms 2428 KiB
random_20.txt AC 82 ms 2552 KiB
random_21.txt AC 85 ms 2536 KiB
random_22.txt AC 86 ms 2440 KiB
random_23.txt AC 85 ms 2408 KiB
random_24.txt AC 86 ms 2516 KiB
random_25.txt AC 86 ms 2488 KiB
random_26.txt AC 86 ms 2496 KiB
random_27.txt AC 88 ms 2528 KiB
random_28.txt AC 86 ms 2536 KiB
random_29.txt AC 85 ms 2552 KiB
random_30.txt AC 85 ms 2524 KiB
random_31.txt AC 85 ms 2492 KiB
random_32.txt AC 90 ms 2488 KiB
random_33.txt AC 86 ms 2488 KiB
random_34.txt AC 85 ms 2496 KiB
random_35.txt AC 85 ms 2520 KiB
random_36.txt AC 86 ms 2468 KiB
random_37.txt AC 85 ms 2452 KiB
random_38.txt AC 89 ms 2332 KiB
random_39.txt AC 85 ms 2604 KiB
sample_01.txt AC 85 ms 2472 KiB
sample_02.txt AC 85 ms 2404 KiB
sample_03.txt AC 84 ms 2524 KiB
sample_04.txt AC 85 ms 2472 KiB