警示后人
查看原帖
警示后人
350880
MaxBlazeResFire楼主2023/8/8 16:45

如果你这题写的半平面交:

  1. YY 坐标绝对值可达 5×10115\times 10^{11},各种极值 101210^{12} 起步;

  2. 用极角排序法求半平面交的,可以先

double UKX = 1e6,UKY = 5e11;
	Seg[++idx] = segment( vec2( 2 * UKX , 2 * UKY ) , vec2( -4 * UKX , 0 ) );  //围
	Seg[++idx] = segment( vec2( -2 * UKX , 2 * UKY ) , vec2( 0 , -4 * UKY ) ); //起
	Seg[++idx] = segment( vec2( -2 * UKX , -2 * UKY ) , vec2( 4 * UKX , 0 ) ); //来
	Seg[++idx] = segment( vec2( 2 * UKX , -2 * UKY ) , vec2( 0 , 4 * UKY ) );  //捏

这样把整个区域围起来,就不会有无限平面交的问题了;

3.最坑的一点,不仅要用折线上的点去碰半平面交的凸壳,也要用半平面交下凸壳的点去碰折线!

否则 hack\rm hack 数据如下(官方数据 22):

input: 4 10 20 49 59 0 10 10 0

output:14.500

2023/8/8 16:45
加载中...