[NOI2020]美食家

美食家

题解

很板的一道矩阵快速幂。

看到题大概很容易想到dp,方程式也很好想f_{v,i}=\max\{f_{u,i-w}+val_{v}\}

但看到T\leq 10^9,就发现直接dp显然是不现实的,于是我们就想到了矩阵快速幂。

我们可以先根据给的边集将矩阵给建出来,由于求的是最大值,矩阵的乘法也需要改成求最大值。

但是由于中间有几个节日需要单独处理,需要进行分段矩阵快速幂,将每个节日的贡献加到乘上某个段的矩阵的后面,进行处理。由于要进行q+1次矩阵快速幂,时间复杂度大概是O\left(qlog_{\frac{T}{q}}w^3n^3\right ),有点危险。

但是我们可以将快速幂中乘的矩阵通过预处理先算出来,之后

posted @ 2021-05-27 20:33  StaroForgin  阅读(8)  评论(0)    收藏  举报  来源