http://acm.neu.edu.cn/hustoj/problem.php?id=1452
题意很明显就是求,给定两点确定的直线方程,注意特殊情况就行。下面引自百度百科。
1:一般式:Ax+By+C=0(A、B不同时为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轴截距为a,y轴截距为b的直线
4:斜截式:y=kx+b【适用于不垂直于x轴的直线】
表示斜率为k且y轴截距为b的直线
5:两点式:【适用于不垂直于x轴、y轴的直线】
表示过(x1,y1)和(x2,y2)的直线
(y-y1)/(y2-y1)=(x-x1)/(x2-x1) (x1≠x2,y1≠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)且与直线f(x,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:法向式:a(x-x0)+b(y-y0)=0【适用于任何直线】
表示过点(x0,y0)且与向量(a,b)垂直的直线
点到直线距离
点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;
}