人类脑瘫行为实录 #1

在做 abc291 的时候,我遇到了一道这样的题(abc291 F):

\(n\) 个点,点 \(i\) 可能能到 \([i+1,i+m]\) 之间的点。对所有 \(2\le k<n\),问不经过 \(k\) 点的情况下从 \(1\) 点到 \(n\) 点的最短路。

\(n\le 10^5,m\le 10\)

看到 \(m\le 10\),我第一反应想到了 \((\min,+)\) 矩阵乘法,大力推了一下式子发现自己对矩阵一窍不通,于是开始罚坐。30 min 后,我看见一车人过了 F,感觉不太对,这种恶心的线段树维护矩阵的题目为啥这么多人过。

重新理了一下思路,考虑直接 dp,设 \(f_i\) 表示 \(1\)\(i\) 的最短路,转移非常简单。

那么对于一个 \(k\),我们考虑枚举跳过 \(k\) 的这条边的两个点,由于 \(m\le 10\),因此这个点的数量级很小。

但是我们又要求 \(i\)\(n\) 的最短路,因此我们又要对每个 \(i\) 跑一遍 dp……

欸?

等下?

\(n\) 是个定值啊???

妈的,脑瘫了,直接设 \(g_i\) 表示 \(i\)\(n\) 的最短路,倒着 dp 一遍就完了。

17 分钟切掉 A~E 的优势全没了,排名直逼 rk300,哈哈。

我是傻逼。

posted @ 2023-02-26 21:52  bykem  阅读(48)  评论(4)    收藏  举报