标签:set 传送门 api 表示 math 不难 its href ble
70+Hack数据真是壮观~
不难考虑到一个暴力的做法:设\(f_{i,j}\)表示在第\(i\)个点、从第\(j\)个doge跳过来的最短距离,因为边权为\(1\)所以就是个BFS,复杂度\(O(NM)\)。
注意到可以优化一些状态:设\(f_{i,j}\)表示在第\(i\)个点、当前的doge的步长为\(j\)的方案数,然后再跑BFS。
看似这样还是\(O(N^2)\)的,但是实际复杂度变为了\(O(N\sqrt{N})\),复杂度分析考虑根号分治:当步长\(> \sqrt{N}\)时显然每一只doge最多只有\(\sqrt{N}\)个有效状态,所以状态数是\(M\sqrt{N}\)的;而步长\(< \sqrt{N}\)时只有\(\sqrt{N}\)种步长,所以状态数是\(N\sqrt{N}\)的。
然后状态可能装不下,bitset即可。
UOJ111 APIO2015 雅加达的摩天楼 最短路、根号分治、bitset
标签:set 传送门 api 表示 math 不难 its href ble
原文地址:https://www.cnblogs.com/Itst/p/11181603.html