NEU-1452: 滑雪大冒险

http://acm.neu.edu.cn/hustoj/problem.php?id=1452

题意很明显就是求,给定两点确定的直线方程,注意特殊情况就行。下面引自百度百科。

1一般式:Ax+By+C=0(AB不同时为0)【适用于所有直线】

k= - A/B , b= - C/B

A1/A2=B1/B2≠C1/C2←→两直线平行

A1/A2=B1/B2=C1/C2←→两直线重合

横截距a=-C/A

纵截距b=-C/B

2点斜式:y-y0=k(x-x0) 适用于不垂直于x轴的直线

表示斜率为k,且过(x0,y0)的直线

3截距式:x/a+y/b=1【适用于不过原点或不垂直于x轴、y轴的直线】

表示与x轴、y轴相交,且x轴截距为ay轴截距为b的直线

4斜截式:y=kx+b适用于不垂直于x轴的直线

表示斜率为ky轴截距为b的直线

5两点式:【适用于不垂直于x轴、y轴的直线】

表示过(x1,y1)和(x2,y2)的直线

(y-y1)/(y2-y1)=(x-x1)/(x2-x1) (x1≠x2y1≠y2)

6:交点式:f1(x,y) *m+f2(x,y)=0 【适用于任何直线】

表示过直线f1(x,y)=0与直线f2(x,y)=0的交点的直线

7:点平式:f(x,y) -f(x0,y0)=0【适用于任何直线】

表示过点(x0,y0)且与直线fx,y=0平行的直线

8法线式:x·cosα+ysinα-p=0

过原点向直线做一条的垂线段,该垂线段所在直线的倾斜角为αp是该线段的长度

9点向式(x-x0)/u=(y-y0)/v (u≠0,v≠0)【适用于任何直线】

表示过点(x0,y0)且方向向量为(u,v )的直线

10:法向式:ax-x0+by-y0=0【适用于任何直线】

表示过点(x0y0)且与向量(ab)垂直的直线

点到直线距离

P(x0,y0)到直线Ι:Ax+By+C=0的距离

d=|Ax0+By0+C|/√A^2+B^2

两平行线之间距离

若两平行直线的方程分别为:

Ax+By+C1=O Ax+By+C2=0 

这两条平行直线间的距离d为:

d= C1-C2/√A^2+B^2)

下面就是直接带公式就行。

#include 
#include 
struct point 
{ 
    int x,y; 
}p[100001]; 
int main() 
{ 
    int t,n,x1,y1,x2,y2,j,ans,a; 
    scanf("%d",&t); 
    while(t--) 
    { 
        ans=0; 
        memset(p,0,sizeof(p)); 
        scanf("%d%d%d%d%d",&n,&x1,&y1,&x2,&y2); 
        for(j=0;j=x1) ans++; 
            } 
            printf("%d\n",ans); 
        } 
        else
        { 
            for(j=0;j=x1&&p[j].y<=y1) 
                ans++; 
            printf("%d\n",ans); 
        } 
    } 
    return 0; 
} 


 

 

你可能感兴趣的:(计算几何,两点确定直线)