【集训队出题2011】大楼 题解

题目出自陈许旻

题目大意

       有一栋楼,每层有 n 个房间。
       房间之间的连通性用一个矩阵给出,对于 A[i,j]=w,表示对于任意的 x,可以从第 x 层的第 i 个房间,走到第 x+w 层的第 j 个房间。
       求最少的操作次数,使你到达的楼层 >=m。
       n<=100, m<=1e18

一开始的想法

       一开始我想构个图出来,然后看看能不能找个最优的环来飞跃。

       然后发现环还蛮多的。。。而且环的优劣性不好判断。

题解

       n 这么小,要从这里搞事情。

       那个连通性矩阵可以看作是一次操作后的结果,那我用类似矩阵乘法的东西对那个矩阵幂运算,就可以得到任意次操作后的结果。

       因此可以倍增,像求 LCA 那样,判断标准就是当前的结果是否有大于 m 的数。

代码

//略

你可能感兴趣的:(算法_矩阵乘法)