HYSBZ - 2662 这个题如果我们先想用平常的方法来建图,因为我们无法确定是否使用卡片,如果我们每个点每个边都建图,那么非常耗时占空间:注意到k是比较小的,所以我们可以把k拆开,把一个点分为k个,分别表示用k张卡片所走的最短路,我们可以理解为走了k个图,相邻图之间的路变为原来所走的路的一半,所以这样建图:各层内部正常连边,各层之间权值为一半的边.每跑一层,就相当于使用一次卡片.跑一遍从s到t+n*k的最短路即可,第i层和第i+1层之间路权值变为原来的一半:相当于用了一次卡,这里我用了dij…