社区讨论

关于半平面交

P4196【模板】半平面交 / [CQOI2006] 凸多边形参与者 4已保存回复 6

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
6 条
当前快照
1 份
快照标识符
@lodl263f
此快照首次捕获于
2023/10/31 08:20
2 年前
此快照最后确认于
2023/11/06 23:29
2 年前
查看原帖
SPFA
本地运行不了(
一进去就卡死
已知如下函数有误
若注释去此函数调用则可
求dalao查错/kel/kel/kel
CPP
Polygon HPI(Line *v,ll n){
	for(ll i=0;i<n;i++) v[i].ang=Line_angle(v[i]);
	sort(v,v+n);
	Polygon ans;
	Line q[maxp];
	Point p[maxp];
	ll l=0,r=0;
	q[0]=v[0];
	for(ll i=1;i<n;i++){
		while(l<r&&!Onleft(v[i],p[r-1])) r--;
		while(l<r&&!Onleft(v[i],p[l])) l++;
		q[++l]=v[i];
		if(sgn(Cross(q[r].p2,q[l-1].p2))==0){
			r--;
			if(Onleft(q[r],v[i].p1)) q[r]=v[i];
		}
		if(l<r) p[r-1]=Cross_point(q[r-1].p1,q[r-1].p2+q[r-1].p1,q[r].p1,q[r].p2+q[r].p1);
	}
	while(l<r&&!Onleft(q[l],p[r-1])) r--;
	if(r-l<=1) return ans;
	p[r]=Cross_point(q[r].p1,q[r].p2+q[r].p1,q[l].p1,q[l].p2+q[l].p1);
	for(ll i=l;i<=r;i++) ans.p[i-l]=p[i];
	ans.n=r-l+1;
	return ans;
}

回复

6 条回复,欢迎继续交流。

正在加载回复...