SHOI2012信用卡凸包


信用卡是一个矩形,唯四个角作了圆滑处理,使它们都是与矩形的两边相切的 14">1414 圆,如下图所示。

QQ截图20201204094116.png

现在平面上有一些规格相同的信用卡,试求其凸包的周长。

注意凸包未必是多边形,因为它可能包含若干段圆弧。

输入格式

第一行是一个正整数 n">nn,表示信用卡的张数。

第二行包含三个实数 a,b,r">a,b,ra,b,r,分别表示信用卡(圆滑处理前)竖直方向的长度、水平方向的长度,以及 14">1414 圆的半径。

之后 n">nn 行,每行包含三个实数 x,y,θ">x,y,θx,y,θ,分别表示一张信用卡中心(即对角线交点)的横、纵坐标,以及绕中心逆时针旋转的弧度。

输出格式

输出只有一行,包含一个实数,表示凸包的周长,四舍五入精确到小数点后 2">22 位。

2">

 这里需要对信用卡的长宽分别处理,原点加上边的一半减-r,即x=x+a/2-r,y=y+b/2-r,求出四个点,并旋转角度,求凸包

凸包各点距离加上圆的周长就是答案啦!