很纠结的一个问题
那就和大家一起分享一下吧
我看了y的视频后有个地方不理解:
就是y写的枚举区间是这样写的
for (int i = level[1] - m; i <= level[1]; i ++ ) res = min(res, dijkstra(i, i + m));
我就不理解了,如果要是 这样枚举为啥不直接做一遍最大区间的dijkstra
后来看了一些大牛的说法原来是这样的:#####有可能存在比酋长等级还要大的人物,那么假如酋长等级为x,等级限制最大范围为y, 那么等级限制范围就应该是x + y ~ x - y
这样理解再做就对了
for(int i = level[1] - m; i <= level[1] + m; i ++)
res = min(dijkstra(i, i + m), res);
是不是因为如果直接做一次最大区间的dijkstra的话有一些边会出现非法的情况啊
因为超过一些等级限制的人不能进行交换,所以我们循环一下把所有限制枚举做一遍的到结果取到min就是最终答案!!!
理解错了,,, 就留着加深下印象吧!