人类脑瘫行为实录 #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,哈哈。
我是傻逼。

浙公网安备 33010602011771号