UOJ111 APIO2015 雅加达的摩天楼 最短路根号分治bitset

Posted itst

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UOJ111 APIO2015 雅加达的摩天楼 最短路根号分治bitset相关的知识,希望对你有一定的参考价值。

传送门


70+Hack数据真是壮观~

不难考虑到一个暴力的做法:设\(f_i,j\)表示在第\(i\)个点、从第\(j\)个doge跳过来的最短距离,因为边权为\(1\)所以就是个BFS,复杂度\(O(NM)\)

注意到可以优化一些状态:设\(f_i,j\)表示在第\(i\)个点、当前的doge的步长为\(j\)的方案数,然后再跑BFS。

看似这样还是\(O(N^2)\)的,但是实际复杂度变为了\(O(N\sqrtN)\),复杂度分析考虑根号分治:当步长\(> \sqrtN\)时显然每一只doge最多只有\(\sqrtN\)个有效状态,所以状态数是\(M\sqrtN\)的;而步长\(< \sqrtN\)时只有\(\sqrtN\)种步长,所以状态数是\(N\sqrtN\)的。

然后状态可能装不下,bitset即可。

代码

以上是关于UOJ111 APIO2015 雅加达的摩天楼 最短路根号分治bitset的主要内容,如果未能解决你的问题,请参考以下文章

BZOJ4070: [Apio2015]雅加达的摩天楼

Luogu P3645 [APIO2015]雅加达的摩天楼

luogu P3645 [APIO2015]雅加达的摩天楼

bzoj 4070: [Apio2015]雅加达的摩天楼spfa

P3645 [APIO2015]雅加达的摩天楼

BZOJ 4070: [Apio2015]雅加达的摩天楼