Submission #20960144
Source Code Expand
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 mut slots = vec![];
for _ in 0..m {
let c: usize = sc.read();
let cost: f64 = sc.read();
let mut dist = vec![];
for _ in 0..c {
let id = sc.usize0();
let p: f64 = sc.read();
dist.push((id, p / 100.0));
}
slots.push((cost, dist));
}
let mut dp = vec![0.0; 1 << n];
for mask in (0..(1 << n)).rev() {
let mut candidates = vec![];
for slot in &slots {
let cost = slot.0;
let mut sum_p = 0.0;
let mut already_have = 0.0;
let mut not_have = vec![];
for &(id, p) in &slot.1 {
if mask & (1 << id) != 0 {
already_have += p;
} else {
not_have.push((p, id));
}
}
if not_have.is_empty() {
continue;
}
let part = 1.0 - already_have;
let e = cost / part;
for (p, id) in not_have {
let p = p / part;
let next_mask = mask | (1 << id);
sum_p += (dp[next_mask] + e) * p;
}
candidates.push(sum_p);
}
if candidates.is_empty() {
continue;
}
candidates.sort_by(|a, b| a.partial_cmp(b).unwrap());
dp[mask] = candidates[0];
}
print!("{}", dp[0]);
}
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()
}
}
Submission Info
| Submission Time | |
|---|---|
| Task | C - ソーシャルゲーム |
| User | kenkoooo |
| Language | Rust (1.42.0) |
| Score | 100 |
| Code Size | 2871 Byte |
| Status | AC |
| Exec Time | 8 ms |
| Memory | 2204 KiB |
Judge Result
| Set Name | A | B | C | D | E | all | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Score / Max Score | 10 / 10 | 10 / 10 | 10 / 10 | 20 / 20 | 20 / 20 | 30 / 30 | ||||||||||||
| Status |
|
|
|
|
|
|
| Set Name | Test Cases |
|---|---|
| A | test_01_ABCDEF.txt, test_02_ABCDEF.txt, test_03_ABCDEF.txt, test_12_ABCDEF.txt |
| B | test_01_ABCDEF.txt, test_02_ABCDEF.txt, test_03_ABCDEF.txt, test_04_BCDF.txt, test_05_BCDF.txt, test_06_BCDF.txt, test_07_BCDF.txt, test_08_BCDF.txt, test_09_BCDF.txt, test_11_BCDF.txt, test_12_ABCDEF.txt |
| C | test_01_ABCDEF.txt, test_02_ABCDEF.txt, test_03_ABCDEF.txt, test_04_BCDF.txt, test_05_BCDF.txt, test_06_BCDF.txt, test_07_BCDF.txt, test_08_BCDF.txt, test_09_BCDF.txt, test_10_CF.txt, test_11_BCDF.txt, test_12_ABCDEF.txt, test_13_CF.txt, test_14_CDF.txt, test_15_CDF.txt, test_16_CF.txt, test_17_CF.txt, test_18_CF.txt, test_25_CDF.txt, test_26_CDF.txt |
| D | test_01_ABCDEF.txt, test_02_ABCDEF.txt, test_03_ABCDEF.txt, test_04_BCDF.txt, test_05_BCDF.txt, test_06_BCDF.txt, test_07_BCDF.txt, test_08_BCDF.txt, test_09_BCDF.txt, test_11_BCDF.txt, test_12_ABCDEF.txt, test_14_CDF.txt, test_15_CDF.txt, test_19_DEF.txt, test_20_DF.txt, test_21_DF.txt, test_22_DF.txt, test_23_DEF.txt, test_24_DF.txt, test_25_CDF.txt, test_26_CDF.txt, test_27_DEF.txt, test_28_DF.txt, test_29_DF.txt, test_30_DF.txt, test_31_DEF.txt, test_32_DF.txt, test_33_DF.txt, test_34_DF.txt, test_35_DEF.txt, test_36_DF.txt, test_37_DF.txt, test_38_DF.txt, test_39_DEF.txt, test_40_DF.txt, test_41_DF.txt, test_42_DF.txt, test_44_DF.txt, test_52_DF.txt |
| E | test_01_ABCDEF.txt, test_02_ABCDEF.txt, test_03_ABCDEF.txt, test_12_ABCDEF.txt, test_19_DEF.txt, test_23_DEF.txt, test_27_DEF.txt, test_31_DEF.txt, test_35_DEF.txt, test_39_DEF.txt, test_49_EF.txt, test_51_EF.txt |
| all | 00_sample_01_F.txt, 00_sample_02_F.txt, 00_sample_03_F.txt, 00_sample_04_F.txt, 00_sample_05_F.txt, test_01_ABCDEF.txt, test_02_ABCDEF.txt, test_03_ABCDEF.txt, test_04_BCDF.txt, test_05_BCDF.txt, test_06_BCDF.txt, test_07_BCDF.txt, test_08_BCDF.txt, test_09_BCDF.txt, test_10_CF.txt, test_11_BCDF.txt, test_12_ABCDEF.txt, test_13_CF.txt, test_14_CDF.txt, test_15_CDF.txt, test_16_CF.txt, test_17_CF.txt, test_18_CF.txt, test_19_DEF.txt, test_20_DF.txt, test_21_DF.txt, test_22_DF.txt, test_23_DEF.txt, test_24_DF.txt, test_25_CDF.txt, test_26_CDF.txt, test_27_DEF.txt, test_28_DF.txt, test_29_DF.txt, test_30_DF.txt, test_31_DEF.txt, test_32_DF.txt, test_33_DF.txt, test_34_DF.txt, test_35_DEF.txt, test_36_DF.txt, test_37_DF.txt, test_38_DF.txt, test_39_DEF.txt, test_40_DF.txt, test_41_DF.txt, test_42_DF.txt, test_43_F.txt, test_44_DF.txt, test_45_F.txt, test_46_F.txt, test_47_F.txt, test_48_F.txt, test_49_EF.txt, test_50_F.txt, test_51_EF.txt, test_52_DF.txt, test_53_F.txt, test_54_F.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 00_sample_01_F.txt | AC | 8 ms | 2080 KiB |
| 00_sample_02_F.txt | AC | 2 ms | 2072 KiB |
| 00_sample_03_F.txt | AC | 2 ms | 2096 KiB |
| 00_sample_04_F.txt | AC | 2 ms | 2072 KiB |
| 00_sample_05_F.txt | AC | 2 ms | 2140 KiB |
| test_01_ABCDEF.txt | AC | 2 ms | 2072 KiB |
| test_02_ABCDEF.txt | AC | 2 ms | 2184 KiB |
| test_03_ABCDEF.txt | AC | 2 ms | 2112 KiB |
| test_04_BCDF.txt | AC | 2 ms | 2140 KiB |
| test_05_BCDF.txt | AC | 2 ms | 2068 KiB |
| test_06_BCDF.txt | AC | 2 ms | 2088 KiB |
| test_07_BCDF.txt | AC | 2 ms | 2092 KiB |
| test_08_BCDF.txt | AC | 2 ms | 2184 KiB |
| test_09_BCDF.txt | AC | 2 ms | 2148 KiB |
| test_10_CF.txt | AC | 2 ms | 2008 KiB |
| test_11_BCDF.txt | AC | 2 ms | 2076 KiB |
| test_12_ABCDEF.txt | AC | 2 ms | 2088 KiB |
| test_13_CF.txt | AC | 1 ms | 2108 KiB |
| test_14_CDF.txt | AC | 2 ms | 2124 KiB |
| test_15_CDF.txt | AC | 2 ms | 2128 KiB |
| test_16_CF.txt | AC | 2 ms | 2140 KiB |
| test_17_CF.txt | AC | 2 ms | 2076 KiB |
| test_18_CF.txt | AC | 2 ms | 2128 KiB |
| test_19_DEF.txt | AC | 2 ms | 2060 KiB |
| test_20_DF.txt | AC | 2 ms | 2132 KiB |
| test_21_DF.txt | AC | 2 ms | 2084 KiB |
| test_22_DF.txt | AC | 2 ms | 2100 KiB |
| test_23_DEF.txt | AC | 2 ms | 2060 KiB |
| test_24_DF.txt | AC | 2 ms | 2092 KiB |
| test_25_CDF.txt | AC | 2 ms | 2044 KiB |
| test_26_CDF.txt | AC | 2 ms | 2092 KiB |
| test_27_DEF.txt | AC | 1 ms | 2128 KiB |
| test_28_DF.txt | AC | 2 ms | 2088 KiB |
| test_29_DF.txt | AC | 2 ms | 2100 KiB |
| test_30_DF.txt | AC | 1 ms | 2192 KiB |
| test_31_DEF.txt | AC | 1 ms | 2108 KiB |
| test_32_DF.txt | AC | 1 ms | 2176 KiB |
| test_33_DF.txt | AC | 1 ms | 2108 KiB |
| test_34_DF.txt | AC | 2 ms | 2116 KiB |
| test_35_DEF.txt | AC | 1 ms | 2016 KiB |
| test_36_DF.txt | AC | 2 ms | 2020 KiB |
| test_37_DF.txt | AC | 2 ms | 2084 KiB |
| test_38_DF.txt | AC | 2 ms | 2168 KiB |
| test_39_DEF.txt | AC | 2 ms | 2124 KiB |
| test_40_DF.txt | AC | 1 ms | 2104 KiB |
| test_41_DF.txt | AC | 2 ms | 2056 KiB |
| test_42_DF.txt | AC | 2 ms | 2072 KiB |
| test_43_F.txt | AC | 3 ms | 2172 KiB |
| test_44_DF.txt | AC | 2 ms | 2184 KiB |
| test_45_F.txt | AC | 2 ms | 2148 KiB |
| test_46_F.txt | AC | 1 ms | 2168 KiB |
| test_47_F.txt | AC | 3 ms | 2020 KiB |
| test_48_F.txt | AC | 1 ms | 1956 KiB |
| test_49_EF.txt | AC | 3 ms | 2164 KiB |
| test_50_F.txt | AC | 2 ms | 2188 KiB |
| test_51_EF.txt | AC | 2 ms | 2204 KiB |
| test_52_DF.txt | AC | 2 ms | 2072 KiB |
| test_53_F.txt | AC | 2 ms | 2168 KiB |
| test_54_F.txt | AC | 2 ms | 2004 KiB |