普及组周赛27
A
首先能围住一定是在 x 轴和 y 轴上都有
由两点之间线段最短可知,围栏的长度就是这两点间的距离
所以找最短的 x 和 y 就可以啦。
B
就推导一下就可以啦
C
如果 k > 1 那么成倍增长一定比一个一个加快,所以模拟就可以了。
D
两两之间的最短路
我们有F-W 蒜法
for(int k = 1 ; k <= n ; k ++ ){ for(int i = 1 ; i <= n ; i ++){ for(int j = 1 ; j <= n ; j ++ ){ dis[i][j] = min(dis[i][k] + dis[k][j] , dis[i][j]); } } }
其中最外层是中转点(一定要放在最外层) 但中转点的顺序不影响,所以把这个拆开来就行。