ABC130 C题 Rectangle Cutting
Rectangle Cutting
显示标签
时间限制:C/C++ 1000MS,其他语言 2000MS
内存限制:C/C++ 256MB,其他语言 512MB
描述
坐标平面上有一个矩形。四个顶点的坐标分别为 (0,0) 、 (W,0) 、 (W,H) 和 (0,H) 。给你一个点 (x,y) ,它位于矩形内或矩形边上。我们将通过 (x,y) 画一条直线,将矩形切割成两部分。求面积不大于另一部分的那一部分的最大面积。此外,请确定是否有多种方法切割矩形并获得最大面积。
输入描述
输入内容由标准输入法提供,格式如下:
W H x y
输出描述
打印面积不大于另一部分面积的部分的最大可能面积,如果有多种方法切割矩形并达到最大值,则在 "1 "后打印,否则打印 “0”。
用例输入 1
2 3 1 2
用例输出 1
3.000000 0
用例输入 2
2 2 1 1
用例输出 2
2.000000 1
题意:
构造一条经过(i,j)的线,将该长方形分为两个部分使得其面积之差最小,并判断是否存在唯一的答案。
思路:
首先,容易知道,我们是肯定可以构造出一条经过(i,j)的线,将该长方形分为两个面积相等部分。
然后,良心的出题人让你判断是否存在唯一的答案。容易地得到当2i=n且2j=m时存在多个答案,否则有唯一解。
注意保留一定的位数输出并使用double或long double存储!!!!
废话不多说,上代码!!
#include<bits/stdc++.h>
using namespace std;
int main()
{
double w, h, x, y;
cin >> w >> h >> x >> y;
if(x == w / 2 && y == h / 2)
{
printf("%.6lf 1\n", w * h / 2);
}
else
{
printf("%.6lf 0\n", w * h / 2);
}
return 0;
}