P7801 KRUMPIRKO 题解

题目解释

给出 \(n, l, a_i, v_i\),求

\[\min _ {\mathbb{C} \subseteq \left[1, n\right] \cup \mathbb{Z} \land \left|\mathbb{C}\right| = l} \frac{\sum _ {i \in \mathbb{C}} v_i \cdot \sum _ {i \notin \mathbb{C}} v_i}{\sum _ {i \in \mathbb{C}} a_i \cdot \sum _ {i \notin \mathbb{C}} a_i} \]

数据范围

  • \(2 \leq n \leq 100\)
  • \(1 \le l < n\)
  • \(1 \le a_i \le 100\)\(\sum _ {i = 1} ^ n a_i \le 500\)
  • \(1 \le c_i \le 10 ^ 6\)

解析

\(p = \sum _ {i = 1} ^ n v_i\)\(q = \sum _ {i = 1} ^ n a_i\)
\(x = \sum _ {i \in \mathbb{C}} v _ i\)\(k = \sum _ {i \in \mathbb{C}} a _ i\)
则题目所求为

\[\min _ {\mathbb{C} \subseteq \left[1, n\right] \cup \mathbb{Z} \land \left|\mathbb{C}\right| = l} \frac{x(p - x)}{k(q - k)} = \min _ {\mathbb{C} \subseteq \left[1, n\right] \cup \mathbb{Z} \land \left|\mathbb{C}\right| = l} \frac{-x ^ 2 + px}{k(q - k)} \]

\(f _ {i, j, k}\) 表示前 \(i\) 个元素中选了 \(j\) 个放入集合 \(\mathbb{C}\)\(k\) 就表示上式中的 \(k\),此时的最小值为 \(f _ {i, j, k}\)
对于第 \(i\) 个元素,只有两中选择:

\[\begin{cases} f _ {i, j, k} = f _ {i - 1, j, k}, i \notin \mathbb{C} \\ f _ {i, j, k} = f _ {i - 1, j - 1, k - a _ i} + , i \in \mathbb{C} \end{cases} \]

posted @ 2025-06-03 12:57  zhaisx  阅读(5)  评论(0)    收藏  举报