51nod 1298 圆与三角形

来源:互联网 发布:jdk 7u80 windows x32 编辑:程序博客网 时间:2024/05/01 22:43
#include <bits/stdc++.h>using namespace std;struct node{long long x,y;node(){};node(int a,int b){x=a;y=b;};};long long dotmulti(node n1,node n2){return n1.x*n2.x+n1.y*n2.y;}long long disd(node n1,node n2){return (n1.x-n2.x)*(n1.x-n2.x)+(n1.y-n2.y)*(n1.y-n2.y);}int main(){long long t,cx,cy,cr,x[5],y[5],A,B,C,d1,d2,i,flag;cin>>t;while(t--){scanf("%lld%lld%lld",&cx,&cy,&cr);for(i=0;i<3;i++)scanf("%lld%lld",&x[i],&y[i]);flag=0;for(i=0;i<3;i++){d1=disd(node(x[i],y[i]),node(cx,cy));d2=disd(node(x[(i+1)%3],y[(i+1)%3]),node(cx,cy));if(d1<cr*cr&&d2<cr*cr)continue;else if(d1>cr*cr&&d2>cr*cr){if(dotmulti(node(x[i]-cx,y[i]-cy),node(x[(i+1)%3]-x[i],y[(i+1)%3]-y[i]))<0&& dotmulti(node(x[(i+1)%3]-cx,y[(i+1)%3]-cy),node(x[i]-x[(i+1)%3],y[i]-y[(i+1)%3]))<0){A=y[i]-y[(i+1)%3];B=-(x[i]-x[(i+1)%3]);C=x[i]*y[(i+1)%3]-x[(i+1)%3]*y[i];if((A*cx+B*cy+C)*(A*cx+B*cy+C)<=cr*cr*(A*A+B*B))flag=1;}}elseflag=1;}if(flag)printf("Yes\n");elseprintf("No\n");}}

0 0
原创粉丝点击