明确题意!给你字符串集合$S$,打字其中一个字符串$s$,如果打到$t$,是就会和$vscode$,出现自动补全,并且按字典序排列,*如果$t$本身也在集合里他也会出现字典序排序,那么选排名$i$,费时$i$妙,任意加一个字符为 $1$秒。
看一看 样例1 $ieh, iqgp, i, iqge, ier.$
比如$iqge=0\rightarrow i \rightarrow iq \rightarrow iqgp =3$,$iqge=0\rightarrow i \rightarrow iqgp =3$
设$dp[i]$为到达$i$最少步数。
$id[i]$ 是这个点的字典序。如果不是集合里的元素,字典序等于他父亲的字典序。
对于一个$i$,他在$x$的排名下是$id[x]+(vis[x]=1)$,这个时候用自动补全就是$d[i]-id[x]-(vis[x]=1)+dp[x]$
只需要在$dfs$一边维护$dp[x]$,一边维护$min(-id[x]-(vis[x]=1)+dp[x])$
代码
1 |
|