矩形划分-几何
普适的代价是抽象
Abstractness is the price of generality
显然,题目描述中过于抽象,出现理解困难的话可以参考题解视频;
我的理解(修正)如下:
- 每次会给出两个点 p,q , 你需要在点 p,q 之间连一条线来划分矩形 , 保证 p,q 分别在矩形的一组对边上 , 即要么分别在左右边界上 , 要么分别在上下边界上。
- 连的线并不要求是直线 , 可以是曲线 , 但不能与自己有交点 , 不能与矩形边界有除 p,q 以外的交点。
- 一条线与其他每条线最多只有一个交点。
- 每个交点只能为二线相交,不可以是更多线相交。
- 保证给出的所有点两两不同。
思路
我们考虑构造过程:
- 对于一个没有线的矩形,显然块数为1;
- 每在矩形中添加一条与其他线没有交点的线,块数会增加1;
- 每在矩形中添加一条与其他线有n个合法交点的线,块数会增加n+1;
所以我们可以发现,块数可以用:1+线数+交点数来表示;
对于交点数,我们可以发现所有纵向线都与每条横向线都一定有一个交点;
接下来我们讨论同方向线间的交点:
我们将线按一侧的坐标排序后,考虑另一侧的坐标,每出现一个逆序对,即说明出现了一次交错,即有一个交点;
具体操作可以使用归并排序统计逆序对;
代码
1 |
|
矩形划分-几何
https://tanyuu.github.io/2022.01-06/矩形划分-几何/