51Nod 1298 圆与三角形
2017-12-06 16:42
375 查看
给出圆的圆心和半径,以及三角形的三个顶点,问圆同三角形是否相交。相交输出”Yes”,否则输出”No”。(三角形的面积大于0)。
Input
第1行:一个数T,表示输入的测试数量(1 <= T <= 10000),之后每4行用来描述一组测试数据。
4-1:三个数,前两个数为圆心的坐标xc, yc,第3个数为圆的半径R。(-3000 <= xc, yc <= 3000, 1 <= R <= 3000)
4-2:2个数,三角形第1个点的坐标。
4-3:2个数,三角形第2个点的坐标。
4-4:2个数,三角形第3个点的坐标。(-3000 <= xi, yi <= 3000)
Output
共T行,对于每组输入数据,相交输出”Yes”,否则输出”No”。
Input示例
2
0 0 10
10 0
15 0
15 5
0 0 10
0 0
5 0
5 5
Output示例
Yes
No
计算几何模板真难打啊!
cin还卡了一组样例的时间
Input
第1行:一个数T,表示输入的测试数量(1 <= T <= 10000),之后每4行用来描述一组测试数据。
4-1:三个数,前两个数为圆心的坐标xc, yc,第3个数为圆的半径R。(-3000 <= xc, yc <= 3000, 1 <= R <= 3000)
4-2:2个数,三角形第1个点的坐标。
4-3:2个数,三角形第2个点的坐标。
4-4:2个数,三角形第3个点的坐标。(-3000 <= xi, yi <= 3000)
Output
共T行,对于每组输入数据,相交输出”Yes”,否则输出”No”。
Input示例
2
0 0 10
10 0
15 0
15 5
0 0 10
0 0
5 0
5 5
Output示例
Yes
No
计算几何模板真难打啊!
cin还卡了一组样例的时间
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #define eps 1e-8 #define IO ios::sync_with_stdio(false);\ cin.tie(0);\ cout.tie(0); using namespace std; struct point { double x,y; }; typedef struct point point; double xmult(point p1,point p2,point p0) { return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y); } double dis(point p1,point p2) { return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y)); } double disptoline(point p,point l1,point l2) { return fabs(xmult(p,l1,l2)/dis(l1,l2)); } int intersect_seg_cricle(point c,double r,point l1,point l2) { double t1=dis(c,l1)-r,t2=dis(c,l2)-r; point t=c; if(t1<eps||t2<eps) return t1>-eps||t2>-eps; t.x+=l1.y-l2.y; t.y+=l2.x-l1.x; return xmult(l1,c,t)*xmult(l2,c,t)<eps&&disptoline(c,l1,l2)-r<eps; } int main() { IO; int T; cin>>T; while(T--) { double r; point p,p1,p2,p3; cin>>p.x>>p.y>>r; cin>>p1.x>>p1.y; cin>>p2.x>>p2.y; cin>>p3.x>>p3.y; int flag1=intersect_seg_cricle(p,r,p1,p2); int flag2=intersect_seg_cricle(p,r,p2,p3); int flag3=intersect_seg_cricle(p,r,p1,p3); if(flag1||flag2||flag3) cout<<"Yes"<<endl; else cout<<"No"<<endl; } }
相关文章推荐
- 51nod 1298 圆与三角形
- 51nod 1298 圆与三角形
- 51Nod 1298 圆与三角形
- 51Nod 1298 圆与三角形
- 51nod 1298 圆与三角形(基础题,计算几何)
- 51Nod 1298 圆与三角形 (计算几何)
- 51nod 1298 圆与三角形
- 51Nod-1298 圆与三角形
- 51NOD 1298 圆与三角形
- 51nod 1298 圆与三角形 (计算几何)
- 51nod 1298 圆与三角形
- 圆与三角形-51NOD 1298
- 51nod--1298 圆与三角形
- 51Nod 1298 圆与三角形
- 51nod_1298_圆与三角形
- 51Nod-1298-圆与三角形
- 51NOD 1298 圆与三角形
- 51Nod 1298 圆与三角形
- 51nod 1298 圆与三角形(计算几何)
- 51nod 1298 圆与三角形