码迷,mamicode.com
首页 > Windows程序 > 详细

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

时间:2019-07-13 18:42:18      阅读:179      评论:0      收藏:0      [点我收藏+]

标签: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!