51Nod 1298 (几何)

题意:
给一个圆和一个三角形,问圆和三角形是否相交。


思路:
容易发现,三角形中里圆心最远的点一定是三个顶点之一,三角形中里圆心最近的点求点到线段最短距离即可。
当着六个点中有在圆上的,或者有一个在圆内,一个在圆外的,则相交。


代码:

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define pb push_back
#define X first
#define Y second
#define ALL(x) x.begin(),x.end()
#define INS(x) inserter(x,x.begin())
#define pii pair
#define qclear(a) while(!a.empty())a.pop();
#define lowbit(x) (x&-x)
#define sd(n) scanf("%d",&n)
#define sdd(n,m) scanf("%d%d",&n,&m)
#define sddd(n,m,k) scanf("%d%d%d",&n,&m,&k)
#define mst(a,b) memset(a,b,sizeof(a))
#define cout3(x,y,z) cout<=0&&t<=1){
        res.x=l.s.x+(l.e.x-l.s.x)*t;
        res.y=l.s.y+(l.e.y-l.s.y)*t;
    }else{
        if(dist(p,l.s)>t;
    while(t--){
        int e=0,l=0,g=0;
        bool ok=0,out=0,in=0;
        point c;
        double r;
        cin>>c.x>>c.y>>r;
        for(int i=0;i<3;i++){
            cin>>p[i].x>>p[i].y;
            double nowdis=dist(p[i],c);
            if(fabs(nowdis-r)


 

你可能感兴趣的:(ACM)