题解P10057 【Line】
deepthinker · · 题解
一道非常简单的题目
题面传送门
这道题求需要多少次操作两条线段才能相交,其实因为一次操作可以平移任意长的距离,操作次数最多为
- 对于是否要上下平移,我们只需要判断两条线段的横坐标区间是否有公共部分。
- 同理,对于是否要左右平移,我们只需要判断两条线段的纵坐标区间是否有公共部分。
话不多说,直接上代码:
#include <bits/stdc++.h>
using namespace std;
long long ax, ay, bx, by, cx, cy, dx, dy, t;
signed main()
{
cin >> t;
while (t--)
{
int ans = 0;
cin >> ax >> ay >> bx >> by >> cx >> cy >> dx >> dy;//输入
if (max(ax, bx) < min(cx, dx) || min(ax, bx) > max(cx, dx))//判断横坐标是否需要操作
{
ans++;
}
if (max(ay, by) < min(cy, dy) || min(ay, by) > max(cy, dy))//判断纵坐标是否需要操作
{
ans++;
}
cout << ans << '\n';
}
return 0;
}//结束
总结
这道题目十分简单,主要考查的是分析和代码实现能力。