题解 P7031 【[NWRRC2016]Anniversary Cake(征集SPJ)】

· · 题解

A.Anniversary Cake

给你一个 w\times h 的矩形,在矩形中有两个整点。请你找到一种方案将矩形划分成两个部分,每个部分中各有一个点。

w,h \leq 10^9

相对简单的构造题,大概在Div2A难度,考场上考虑比较simple所以挂了两发。

我们设两个点坐标为 (x_1,y_1),(x_2,y_2) 一共有两种情况需要我们讨论,一种情况是横坐标相同,如图:

这种情况下,我们可以直接构造到两个点的最左和最右端,即 (0,y_1),(w,y_2)

第二种情况就是横坐标不同,如图:

这种情况下,我们可以直接构造到两个点的最下和最上方,即 (x_1,0),(x_2,h)

想出方案后代码就很好写了。

Code:

signed main() {
    //FO(anniversary)
    read(w,h,x1,y1,x2,y2);
    if (x1 == x2) cout << 0 << " " << y1 << " " << w << " " << y2;
    else cout << x1 << " " << 0 << " " << x2 << " " << h;
    return 0;
}