【2018百度之星程序设计大赛初赛】rect

Problem Description

度度熊有一个大小为 M X × M Y 的矩形,左下角坐标为 ( 0 , 0 ) ,右上角坐标为 ( M X , M Y ) 。此矩形内有 N 个整数坐标的点 ( x i , y i ) x i 彼此不重复, y i 彼此也不重复。

现在要从每一个点画出一条线段,满足下列条件:

  • 线段起点为坐标点,终点在矩形范围的四个边界之一上。
  • 线段彼此不能交叉。

现在要让画出的线段的长度总和最小,请输出这个最小的长度总和值。

Input

输入的第一行有一个正整数 T,代表接下来有几笔测试资料。

对于每笔测试资料: 第一行有三个整数 MX, MY 以及 N。 接下来的 N 行每行有两个正整数 x i y i
2 M X , M Y 10 6
0 N 10 5
如果 i j ,则保证 x i x j y i y j
0 < x i < M X
0 < y i < M Y
1 T 20
至多 22 笔测试资料中的 N > 1000

Output

对于每一笔测试资料,请依序各自在一行内输出一个整数,代表可能的最小长度和。

Sample Input

2
4 4 1
2 2
10 7 3
6 3
2 6
9 5

Sample Output

2
5

Solution

此题为一道大水题。首先因为对于 i j 保证 x i x j y i y j ,这就说明每个点是在不同行不同列的,换句话说就是每一行每一列只有一个点,这就很好的证明了不会有重合的情况,仔细思考我们其实可也发现其实相交的情况也不存在。因为假设一个点,它到与它最近的边界连了一条边,如果有一条边要和它相交,即不连到当前这个点最近的边界,那么这个点一定比当前的点离它最近的边界还要近,那么其实这个点要连到的是当前这个点的边界而不是其他的边界,这与题设矛盾,所以不会存在相交的情况。那么我们直接取这个点到四个边界的最小值就好了。


作者:zsjzliziyang
QQ:1634151125
转载及修改请注明
本文地址:https://blog.csdn.net/zsjzliziyang/article/details/

猜你喜欢

转载自blog.csdn.net/zsjzliziyang/article/details/81607215