描述
为了建造一艘前往荷兰埃因霍温的船舶,各种钣金零件必须从矩形金属板上切割下来。 每个部分是最多有8个顶点的凸多边形。
每个矩形片状金属具有宽度n和高度m,使得可以通过笛卡尔坐标(0,0),(0,m),(n,m)和(n,0)来指定片材的四个角
)按顺时针顺序。 切割机可以只做直线切割完全通过金属。 也就是说,它不能在片材中途切割,转动,然后再切割一些。
要求您编写一个程序,以确定该机器为了剪切多边形而必须进行的切割的最小总长度。 切口必须沿着poligon的边缘。
例如,如果n = m = 100,并且多边形具有顶点(80,80),(70,30),(20,20)和(20,80),则下图示出了最佳切割
)。 数字显示切割的顺序。
输入
第一行输入包含两个整数n和m,其中0 <n,m <= 500。下一行包含p,多边形中的顶点数,其中3 <= p <= 8。下一个p
行包含两个整数x和y,其中0 <x <n和0 <y <m,指定多边形的顶点。 顶点按顺时针顺序列出。 您可以假设多边形本身不相交,并且没有三个连续的顶点是共线的。
输出
打印切割给定多边形所需的最小切割总长度,精确到小数点后三位。