提出 #22119383
ソースコード 拡げる
use std::time::Instant;
fn main() {
let (r, w) = (std::io::stdin(), std::io::stdout());
let mut sc = IO::new(r.lock(), w.lock());
let n: usize = sc.read();
let m: usize = sc.read();
let k: usize = sc.read();
let mut no = vec![vec![false; n]; n];
for _ in 0..m {
let a: usize = sc.read();
let b: usize = sc.read();
no[a][b] = true;
no[b][a] = true;
assert!(a < b);
}
let start = Instant::now();
let mut ok = 0;
let mut ng = 0;
let mut rng_state = 717;
loop {
if start.elapsed().as_millis() > 3000 {
break;
}
let mut p = (0..n).collect::<Vec<_>>();
for _ in 0..k {
let i = xor_shift_64(&mut rng_state) % n;
let mut j = xor_shift_64(&mut rng_state) % (n - 1);
if i <= j {
j += 1;
}
p.swap(i, j);
}
let is_ok = (0..n).all(|i| !no[p[i]][p[(i + 1) % n]]);
if is_ok {
ok += 1;
} else {
ng += 1;
}
}
println!("{}", ok as f64 / (ok + ng) as f64);
}
fn xor_shift_64(state: &mut usize) -> usize {
let mut x = *state;
x ^= x << 13;
x ^= x >> 7;
x ^= x << 17;
*state = x;
x
}
pub trait NextPermutation {
fn next_permutation(&mut self) -> bool;
}
impl<T> NextPermutation for [T]
where
T: PartialOrd,
{
fn next_permutation(&mut self) -> bool {
if self.len() < 2 {
return false;
}
let mut i = self.len() - 1;
while i > 0 && self[i - 1] >= self[i] {
i -= 1;
}
if i == 0 {
return false;
}
let mut j = self.len() - 1;
while j >= i && self[j] <= self[i - 1] {
j -= 1;
}
self.swap(j, i - 1);
self[i..].reverse();
true
}
}
pub struct IO<R, W: std::io::Write>(R, std::io::BufWriter<W>);
impl<R: std::io::Read, W: std::io::Write> IO<R, W> {
pub fn new(r: R, w: W) -> IO<R, W> {
IO(r, std::io::BufWriter::new(w))
}
pub fn write<S: ToString>(&mut self, s: S) {
use std::io::Write;
self.1.write_all(s.to_string().as_bytes()).unwrap();
}
pub fn read<T: std::str::FromStr>(&mut self) -> T {
use std::io::Read;
let buf = self
.0
.by_ref()
.bytes()
.map(|b| b.unwrap())
.skip_while(|&b| b == b' ' || b == b'\n' || b == b'\r' || b == b'\t')
.take_while(|&b| b != b' ' && b != b'\n' && b != b'\r' && b != b'\t')
.collect::<Vec<_>>();
unsafe { std::str::from_utf8_unchecked(&buf) }
.parse()
.ok()
.expect("Parse error.")
}
pub fn usize0(&mut self) -> usize {
self.read::<usize>() - 1
}
pub fn vec<T: std::str::FromStr>(&mut self, n: usize) -> Vec<T> {
(0..n).map(|_| self.read()).collect()
}
pub fn chars(&mut self) -> Vec<char> {
self.read::<String>().chars().collect()
}
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | D - シャッフル席替え |
| ユーザ | kenkoooo |
| 言語 | Rust (1.42.0) |
| 得点 | 100 |
| コード長 | 3199 Byte |
| 結果 | AC |
| 実行時間 | 3009 ms |
| メモリ | 2168 KiB |
ジャッジ結果
| セット名 | all | ||
|---|---|---|---|
| 得点 / 配点 | 100 / 100 | ||
| 結果 |
|
| セット名 | テストケース |
|---|---|
| all | 00_mini_01.txt, 00_mini_02.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 01_rnd_11_01.txt, 01_rnd_11_02.txt, 01_rnd_11_03.txt, 01_rnd_11_04.txt, 01_rnd_11_05.txt, 01_rnd_11_06.txt, 01_rnd_11_07.txt, 01_rnd_11_08.txt, 01_rnd_11_09.txt, 01_rnd_11_10.txt, 01_rnd_11_11.txt, 01_rnd_11_12.txt, 01_rnd_11_13.txt, 01_rnd_11_14.txt, 01_rnd_11_15.txt, 01_rnd_11_16.txt, 01_rnd_11_17.txt, 01_rnd_11_18.txt, 01_rnd_11_19.txt, 01_rnd_11_20.txt, 01_rnd_11_21.txt, 01_rnd_11_22.txt, 01_rnd_7_01.txt, 01_rnd_7_02.txt, 01_rnd_7_03.txt, 01_rnd_7_04.txt, 01_rnd_7_05.txt, 01_rnd_7_06.txt, 01_rnd_7_07.txt, 01_rnd_7_08.txt, 01_rnd_7_09.txt, 01_rnd_7_10.txt, 01_rnd_7_11.txt, 01_rnd_7_12.txt, 01_rnd_7_13.txt, 01_rnd_7_14.txt, 01_rnd_7_15.txt, 01_rnd_7_16.txt, 01_rnd_7_17.txt, 01_rnd_7_18.txt, 01_rnd_7_19.txt, 01_rnd_7_20.txt, 01_rnd_7_21.txt, 01_rnd_7_22.txt, 01_rnd_8_01.txt, 01_rnd_8_02.txt, 01_rnd_8_03.txt, 01_rnd_8_04.txt, 01_rnd_8_05.txt, 01_rnd_8_06.txt, 01_rnd_8_07.txt, 01_rnd_8_08.txt, 01_rnd_8_09.txt, 01_rnd_8_10.txt, 01_rnd_8_11.txt, 01_rnd_8_12.txt, 01_rnd_8_13.txt, 01_rnd_8_14.txt, 01_rnd_8_15.txt, 01_rnd_8_16.txt, 01_rnd_8_17.txt, 01_rnd_8_18.txt, 01_rnd_8_19.txt, 01_rnd_8_20.txt, 01_rnd_8_21.txt, 01_rnd_8_22.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 00_mini_01.txt | AC | 3009 ms | 2080 KiB |
| 00_mini_02.txt | AC | 3003 ms | 2148 KiB |
| 00_sample_01.txt | AC | 3003 ms | 1968 KiB |
| 00_sample_02.txt | AC | 3003 ms | 1936 KiB |
| 00_sample_03.txt | AC | 3007 ms | 1960 KiB |
| 01_rnd_11_01.txt | AC | 3003 ms | 2076 KiB |
| 01_rnd_11_02.txt | AC | 3003 ms | 2024 KiB |
| 01_rnd_11_03.txt | AC | 3003 ms | 2052 KiB |
| 01_rnd_11_04.txt | AC | 3003 ms | 1988 KiB |
| 01_rnd_11_05.txt | AC | 3003 ms | 2072 KiB |
| 01_rnd_11_06.txt | AC | 3003 ms | 2136 KiB |
| 01_rnd_11_07.txt | AC | 3003 ms | 2032 KiB |
| 01_rnd_11_08.txt | AC | 3003 ms | 2048 KiB |
| 01_rnd_11_09.txt | AC | 3003 ms | 2132 KiB |
| 01_rnd_11_10.txt | AC | 3003 ms | 2044 KiB |
| 01_rnd_11_11.txt | AC | 3004 ms | 2080 KiB |
| 01_rnd_11_12.txt | AC | 3003 ms | 2044 KiB |
| 01_rnd_11_13.txt | AC | 3003 ms | 1936 KiB |
| 01_rnd_11_14.txt | AC | 3003 ms | 2124 KiB |
| 01_rnd_11_15.txt | AC | 3003 ms | 2080 KiB |
| 01_rnd_11_16.txt | AC | 3003 ms | 2060 KiB |
| 01_rnd_11_17.txt | AC | 3003 ms | 2108 KiB |
| 01_rnd_11_18.txt | AC | 3003 ms | 1976 KiB |
| 01_rnd_11_19.txt | AC | 3003 ms | 2072 KiB |
| 01_rnd_11_20.txt | AC | 3003 ms | 2072 KiB |
| 01_rnd_11_21.txt | AC | 3003 ms | 2084 KiB |
| 01_rnd_11_22.txt | AC | 3003 ms | 1972 KiB |
| 01_rnd_7_01.txt | AC | 3003 ms | 2064 KiB |
| 01_rnd_7_02.txt | AC | 3004 ms | 2060 KiB |
| 01_rnd_7_03.txt | AC | 3003 ms | 1940 KiB |
| 01_rnd_7_04.txt | AC | 3003 ms | 2084 KiB |
| 01_rnd_7_05.txt | AC | 3004 ms | 2060 KiB |
| 01_rnd_7_06.txt | AC | 3003 ms | 2032 KiB |
| 01_rnd_7_07.txt | AC | 3004 ms | 2124 KiB |
| 01_rnd_7_08.txt | AC | 3003 ms | 2092 KiB |
| 01_rnd_7_09.txt | AC | 3003 ms | 2064 KiB |
| 01_rnd_7_10.txt | AC | 3004 ms | 2132 KiB |
| 01_rnd_7_11.txt | AC | 3003 ms | 2076 KiB |
| 01_rnd_7_12.txt | AC | 3003 ms | 2120 KiB |
| 01_rnd_7_13.txt | AC | 3003 ms | 2168 KiB |
| 01_rnd_7_14.txt | AC | 3003 ms | 2092 KiB |
| 01_rnd_7_15.txt | AC | 3003 ms | 2112 KiB |
| 01_rnd_7_16.txt | AC | 3004 ms | 2132 KiB |
| 01_rnd_7_17.txt | AC | 3003 ms | 2088 KiB |
| 01_rnd_7_18.txt | AC | 3003 ms | 2104 KiB |
| 01_rnd_7_19.txt | AC | 3003 ms | 2076 KiB |
| 01_rnd_7_20.txt | AC | 3003 ms | 2080 KiB |
| 01_rnd_7_21.txt | AC | 3003 ms | 2060 KiB |
| 01_rnd_7_22.txt | AC | 3003 ms | 1976 KiB |
| 01_rnd_8_01.txt | AC | 3003 ms | 2080 KiB |
| 01_rnd_8_02.txt | AC | 3003 ms | 2120 KiB |
| 01_rnd_8_03.txt | AC | 3003 ms | 2104 KiB |
| 01_rnd_8_04.txt | AC | 3003 ms | 2068 KiB |
| 01_rnd_8_05.txt | AC | 3003 ms | 2084 KiB |
| 01_rnd_8_06.txt | AC | 3003 ms | 1884 KiB |
| 01_rnd_8_07.txt | AC | 3003 ms | 2044 KiB |
| 01_rnd_8_08.txt | AC | 3003 ms | 2060 KiB |
| 01_rnd_8_09.txt | AC | 3003 ms | 2060 KiB |
| 01_rnd_8_10.txt | AC | 3003 ms | 2064 KiB |
| 01_rnd_8_11.txt | AC | 3003 ms | 2072 KiB |
| 01_rnd_8_12.txt | AC | 3003 ms | 2064 KiB |
| 01_rnd_8_13.txt | AC | 3003 ms | 2040 KiB |
| 01_rnd_8_14.txt | AC | 3003 ms | 2032 KiB |
| 01_rnd_8_15.txt | AC | 3003 ms | 2056 KiB |
| 01_rnd_8_16.txt | AC | 3003 ms | 2120 KiB |
| 01_rnd_8_17.txt | AC | 3003 ms | 2048 KiB |
| 01_rnd_8_18.txt | AC | 3003 ms | 2140 KiB |
| 01_rnd_8_19.txt | AC | 3003 ms | 2080 KiB |
| 01_rnd_8_20.txt | AC | 3003 ms | 1972 KiB |
| 01_rnd_8_21.txt | AC | 3003 ms | 2036 KiB |
| 01_rnd_8_22.txt | AC | 3003 ms | 2120 KiB |