题目大意:给出一个光源,给出一些圆,求投影区间。

如图,先可以求出角a,通过半径与PQ距离,而角b也可以求出。那么就可以求出两条切线与Y轴的夹角,分别为a+b,b-a。
之后利用角度求出各投影线段的左右顶点,排序判断即可。
?
?
#include
#include
#include
#include
using namespace std; struct Point { double x,y; }p,q; struct Node { double l,r; }line[505]; double dist(Point p1,Point p2) { return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y)); } bool cmp(Node n1,Node n2) { return n1.l
R) { printf("%.2f %.2f\n",L,R); L=line[i].l;R=line[i].r; } else R=max(line[i].r,R); } printf("%.2f %.2f\n\n",L,R); } return 0; }
?