[SDOI2017]天才黑客

天才黑客

题解

貌似挺简单的一道dijkstra

其实到最后发现就是建图跑一次dijk,就是建图有些恶心而已。

我们发现这道题本质上就是一个找最短路,关于每条边的距离它给了一个trie树来形容。

由于每条边的长度会受到它当前所带的字符串的影响,所以我们就顺理成章的想到了拆点。

明显不能把一个点拆成它所有的入边个点,看了看数据范围,空间炸了。

于是我们考虑另一种建图方式,来拆边:

我们可以把一个边拆成2个点,分别为它的入点与出点,它们之间连代表这条边边权的边。对于两条不同的边,若他们可以到达,及他们为(a,b)与(b,c),那么我们就在它们直接连一条为它们lcp的边。最后从超源向点1连接了的边连边即可。统计答案时就统计所有能到这个点的边的最小值即可。

不过这种图还是会被菊花图给炸掉。O\left(m^{2} \right )条边,不炸才怪。

我们貌似还得想办法优化。由于这是一个trie树上的字符串,当m> k时一定会出现许多重复边权的边,因为最多只会

posted @ 2020-01-17 23:25  StaroForgin  阅读(6)  评论(0)    收藏  举报  来源