UVALive 6655 Two Points Revisited (思路--构造垂直线段)

    xiaoxiao2023-03-24  4

    题意:

    给你一个线段的两个端点,有一个正方形,恰好包含这个线段,求另外一个线段的两个端点,使得它们垂直这个线段,并且不超过正方形?

    思路:

    方法借鉴的队友的,很巧妙!

    我们知道  两个直线垂直 条件是 两个直线斜率乘积为-1,因此,我们先假设两个点为x,y 和 u,v

    那么那么满足k1 = (y-v)/ (u-x)

    因此,我们先假设y = x1-x2,x = y2-y1, u = x = 0

    这样肯定不会超过正方形,但是有可能  x,y是负的,负的也没关系,直接让对应的u和v  为相反数,xy变成0即可!

    详细见代码:

    #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int main(){ int T,kase = 0; scanf("%d",&T); while(T--){ int x1,y1,x2,y2; scanf("%d %d %d %d",&x1, &y1, &x2, &y2); int y = x1-x2,x = y2- y1;/// k1 * k2 == -1; int u = 0,v = 0; if (y < 0){ v = -y; y = 0; } if (x < 0){ u = -x; x = 0; } printf("Case %d: %d %d %d %d\n",++kase,x,y,u,v); } return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-1201819.html
    最新回复(0)