摘要: 题意:有 \(n\) 只虫子,第 \(i\) 只虫子想吃第 \(a_i\) 只虫子,虫子按随机排列 \(p\) 顺序行动,若 \(a_{p_i}\) 虚弱则被吃,否则 \(p_i\) 变虚弱,求被吃掉虫子的期望数量,\(n \le 500\)。思路:构建 \(i\) 到 \(a_i\) 的内向基环树森林,拆分算各虫子被吃概率。对第 \(i\) 只虫子,需满足 \(t_{a_i} < t_i\),\(\forall a_j = a_i \land t_{a_i} < t_j, t_i < t_j\) 及 \(a_i\) 行动时变虚弱。先判断前两个条件,满足则递归。设 \(f_i\) 为前 \(i\) 个点满足前两条件的方案数,用容斥原理,设 \(dp_{i,D}\) 表示考虑到链上第 \(i\) 个点,\(\sum_{j \le i} d_j = D\) 的方案数,利用插板法结合容斥系数 \((-1)^{\sum d_{i + 1}}\) 求解,对每个链头操作,时间复杂度 \(O(n^3)\)。 阅读全文
posted @ 2025-10-14 19:51 wing_heart 阅读(12) 评论(0) 推荐(1)