因为题目告诉我们每两点间只有一条路相连that there is exactly one path between any two free blocks.就可以把点之间形成的路径看成是一棵树题目又要我们找最长的一条路,瞬间就可以转换成树的最长路来做了结论是从树上的任何一点出发,能搜到的最远的点肯定是最长链上的一端,再从这一端出发,能搜到的最远的点的距离即为答案证明过程详见View Code #include<queue>#include<cstdio>#include<cstring>#include<algorithm>using names Read More
上图使用来描述直线向内推进r这一过程的ac=r,ae是推进前的直线上的两点,现在求c、f的坐标,由上可得三角形ace 与三角形abd相似,所以很快便可求出ab 的距离,即x坐标的移动距离,延长de,从f向其做垂线,连接fd,便又可以由三角形相似求得y坐标的移动距离下面是两道半平面交向内推进r的例子http://poj.org/problem?id=3525http://poj.org/problem?id=3384主要讲讲3384先用3525的方法向内推进r求出一个内核,则可知这个核上的任何一点都可以成为圆心坐标,要使的两个圆的重叠面积尽可能小,就要使他们的圆心坐标尽可能的远,素以可以选取内核 Read More