关于这道题怎么判交为空
查看原帖
关于这道题怎么判交为空
41243
Lucky_Glass楼主2021/2/3 20:12

现在能够看到的hack数据都是把一些 AC 程序卡成了输出负数或者把无交集判成有交集。

我自己针对这道题的判断方法是“判断最后得到的图形的相邻直线的旋转角度是否超过180”。

因为是凸包(封闭图形)求交,所以如果有交,必然也是个封闭图形,而且是凸包,那么相邻直线的旋转角度就一定小于 180。

代码部分如下:

//rl是最后求出的交的直线
for(int i=1;i<m;i++)
	if(cross(rl[i].d,rl[i-1].d)>=0) //说明旋转角大于等于 180
		return false;
if(cross(rl[0].d,rl[m-1].d)>=0) return false;

好像卡不掉。

2021/2/3 20:12
加载中...