总结4.24
T2:
两个人一起跑bfs,dis和vis要开四维,前两维是第一个人的坐标,后两维是第二个人的坐标,但是我当时写的时候没有用vis,因为怕炸掉,但没考虑到其中一个人在原点的情况,在原点的dis为0,那所以这个人就可以走向原点,其余的只需要按题目模拟就可以了
T3:
我原本想的是按一到n围成的环来连边,然后再枚举每条路断开的情况然后再让两个相邻的目标岛屿跑一遍BFS要按题目要求,然后再算他们最短距离的总和
实际上每相邻两个目标岛屿可以按顺时针和逆时针来分情况讨论,顺时针就是两个岛屿编号的差,逆时针就是用n减去顺时针需要的路线长度可以看下面这个图
r1代表顺时针,r2代表逆时针
有两种情况,一种是r1近一些,一种是r2近一些,如果哪一种走法近一些,就考虑关闭那个走法中的一条路,因为多走的部分关乎区间,所以可以用差分来记录关闭这个桥之后需要多走的长度,但是我们是关闭某个桥,我们不需要把岛屿编号加一,他多走的部分就是r2和r1的差。但差分只是求关闭某个桥之后多走了多少,所以每次要算所有min(r1,r2)的和。最后找关闭某个桥后多走的最小值加上不关闭桥走法的长度