六省联考 2017


期末考试 \((\texttt{Easy} \ 0 / 0)\)

枚举所有成绩出完的天数,贪心制定方案即可。

相逢是问候 \((\texttt{Easy} \ 2 / 3)\)

首先需要 这个题,那么本题再套一个势能线段树即可。

但是很繁琐,比较恶心(也可能是我的实现太差了),可以用光速幂,也可以设阈值。

组合数问题 \((\texttt{Easy} \ 2 / 0)\)

想到矩乘就简单了。注意 \(k = 1\) 的情况。

摧毁「树状图」

雷哥题,考前做。

分手是祝愿 \((\texttt{Medium} \ 4 / 0)\)

好神啊。

发现关灯的最优方案肯定是从大往小了关,所以我们可以确定最优方案中要关哪些灯,并且显然最优方案唯一,于是我们就可以把初始状态看作最优方案中要操作的位置为 \(1\) 其余的为 \(0\);把每次操作看成单点修改,那么会终止当且仅当 \(1\) 的个数 \(\le k\)。然后就可以直接 dp 了。。。

\(f_i\) 表示 \(1\) 的个数为 \(i\)\(1\) 的个数为 \(i - 1\) 的期望步数,有方程

\[f_i = 1 + \frac{n - i}{n} \times (f_{i + 1} + f_i) \]

移项可得

\[f_i = \frac{n + (n - i)f_{i + 1}}{i} \]

于是直接 dp 即可,时间复杂度 \(\mathcal{O}(n)\)

寿司餐厅 \((\texttt{Medium} \ 4 / 1)\)

精妙的网络流,反正我是没想出来。

考虑把问题转化为最大权闭合子图问题。

对于每个区间建立一个点,发现若 \([i, j]\) 被选,则对于 \(\forall i \le i' \le j' \le j\)\([i', j']\) 都会被选,所以可以连 \([i, j - 1] \to [i, j]\)\([i + 1, j] \to [i, j]\),边权为 \(\infty\) 的边。

再对于所有代号建立 \(\omega\) 个点,其中 \(\omega\) 指值域。那么对于 \(\forall i\),我们需要令 \(d_{i, i} \leftarrow d_{i, i} - a_i\),因为选择它还会带来 \(-a_i\) 的收益。然后我们连一条 \(a_i \to i\),边权为 \(\infty\) 的边,表示选择了 \(i\) 意味着出现了第 \(a_i\) 种代号。

剩下的边按照最大权闭合子图的建图方法,非负的连 \(s\)、负的连 \(t\) 即可。