【题目大意】给出房子的坐标表示为(x1,x2,y)代表房子所在二维坐标系上的位置,给出路的坐标表示(rx1,rx2,ry)同样表示路在二维坐标系上的位置。然后给出n个障碍物,每个障碍物的坐标表示是(a[i].x1,a[i].x2,a[i].y),问在路上避过障碍物可以连续的看到房子的最远距离是多少。
【解题思路】先对房子和障碍物进行连线构建投影,再按照投影得到在路上的坐标进行排序,最后取即刻。
哎,说起来很简单,写起来就....T_T....各种哭爹叫娘。
首先,障碍物跟房子和路都不会是同一个纵坐标;另外,投影可能会投影在路外面....足足wa了我8次,8次啊.....
刚开始开了线段这个结构体以为要用到,后来发现其实坐标点都没什么用,有用的还是横坐标而已~~懒得改回来了~程序就显得冗长一点。
【代码】:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
#include <cmath>
using namespace std;
#define eps 1e-9
struct Point{
double x,y;
Point(){}
Point(double a,double b){
x=a,y=b;
}
};
struct Line{
Point a,b;
Line() {}
Line(Point x,Poi