Problem's Link: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=87213
Mean:
给你一个N*N的网格,有M个雷达,每个雷达的扫射区域是一个直角边长为P的等腰直角三角形,能够向以直角顶点为中心的四个象限扫射。
雷达之间存在信号屏蔽,只有被奇数个雷达扫射到的区域才能被信号覆盖。求被信号覆盖的区域是多少。
analyse:
因为给的都是整数点,这样就不涉及到计算几何了。
N的范围是0~3000,M的范围是1~100。
总的思路是:对N*N的网格做一维遍历(随便哪一维都行)。假设我们选取横向遍历,那么对于每一个竖列,我们对所有的雷达进行判断,判断是否经过这个数列。
如果经过,计算出在这个数列的长度,用一个数组存起来。每扫一列,对这一列的线段做一次扫描线,加到answer中,扫完即得最终答案。
Time complexity: O(N*M)
Source code:
代码1:
;
;
;
; ; ) ) ) ;
; ;
; )
);
)
);
);
);
);
);
;
; ))
;
}
;
;
; ; ) ) ) ;
; ;
; )
);
)
);
);
);
);
);
;
; ))
;
}
代码2:
;
;
;
; );
;)
)
)
;
;;
;) ));
;
;
;
;
; );
;)
)
)
;
;;
;) ));
;
;
;
;
;
;
;) ;
}
/*
*/