题意:
sol:
考虑floyed
直接暴力做的话复杂度是kn^3会炸。
考虑一个比较神仙的分块做法。
注意到我们是可以直接求单独某个k的矩阵,使用矩阵快速幂即可(取min的矩阵乘法)。
单独求一次的复杂度是O(n^3logk)。
设块的长度为100。
对k/100的分块边界求一下它们的矩阵。
这些矩阵称为a矩阵。
再求出前100个矩阵,这个直接floyed即可。
然后对他们搞一个后缀min,也就是说第k个矩阵代表了至少走k条边的最短路矩阵。
这些矩阵称为b矩阵。
那么回答的询问的时候设询问q=100x+y。
此时需要做的只是合并第x个a矩阵和第y个b矩阵即可。
由于只关注s-t的最短路,因此复杂度只有n。
综上复杂度O(n^3logk+qn)。
相关文章
- MySQL Error: PROCEDURE xmdk.query_all_plan can't return a result set in the given context
- HDU 3377 Plan
- Building An Effective Marketing Plan
- Building an FTP Test Plan
- conda: “The environment is inconsistent, please check the package plan carefully”
- The environment is inconsistent, please check the package plan carefully。
- Anaconda:The environment is inconsistent, please check the package plan carefully的解决办法
- 用conda安装包出现The environment is inconsistent, please check the package plan carefully
- (转)ZOJ 3687 The Review Plan I(禁为排列)
- The 2015 China Collegiate Programming Contest A. Secrete Master Plan hdu5540