时间限制:1 s 内存限制:256 MBios
“据说我们要完了?”比利·海灵顿拨弄着操纵杆,头也不回地问Asm.Def。程序员
“不要听得风就是雨。”网络
“开个玩笑嘛。不就是打机器人,紧张啥,你看人家凯尔·里斯,还能顺便谈个恋爱……”spa
这时空天飞机陡然抬起机头, Asm.Def被牢牢压在座椅上。不一会,仪表盘上的青蛙玩偶飞了起来,代表他们已经进入近地轨道。code
“华莱士比你还紧张,据说是要去什么无……”blog
“无线电焦点,在那能监听到透明计算网络控制的全部卫星。并且是已经去过了,因此我才会在这儿。”Asm.Def回答。内存
“这我知道,送你去拉格朗日点,大家的‘蓝翔’号星舰,只是有个小问题:没油了。”get
“什么?!”数学
“咱们能够去废弃卫星上找燃料。如今就差一个程序员。”string
咱们把太空看作一个二维平面。有N颗废弃卫星,第i颗的坐标是(xi,yi)。Asm.Def但愿从尽量多的卫星获取燃油,但他乘坐的空天飞机的飞行路径只能是一条直线,Asm.Def须要知道,这条直线最多能通过多少颗卫星。
第1行1个整数N。
接下来N行,每行两个整数xi,yi,表示第i颗卫星的坐标。
一行一个整数,即一条直线最多能通过多少颗卫星。
6 0 0 0 2 2 0 2 2 1 1 0 0
4
对于30%的数据,1<=N<=10.
对于100%的数据,1<=N<=100,坐标为整数,绝对值<=10000.
写水题舒缓一下心情
数学问题 计算几何 暴力
这系列的题,题面都好神啊……
看了看数据范围,暴力怼过去好了。
$O(n^2)$枚举两点,而后$O(n)$判有多少点在线上
完毕
1 /*by SilverN*/ 2 #include<algorithm> 3 #include<iostream> 4 #include<cstring> 5 #include<cstdio> 6 #include<cmath> 7 #include<vector> 8 using namespace std; 9 const double eps=1e-7; 10 const int mxn=110; 11 int read(){ 12 int x=0,f=1;char ch=getchar(); 13 while(ch<'0' || ch>'9'){if(ch=='-')f=-1;ch=getchar();} 14 while(ch>='0' && ch<='9'){x=x*10+ch-'0';ch=getchar();} 15 return x*f; 16 } 17 struct point{ 18 double x,y; 19 point operator + (point b){return (point){x+b.x,y+b.y};} 20 point operator - (point b){return (point){x-b.x,y-b.y};} 21 double operator * (point b){return x*b.x+y*b.y;} 22 }a[mxn]; 23 double Cross(point a,point b){return a.x*b.y-a.y*b.x;} 24 int ans=0; 25 int n; 26 void solve(point st,point ed){ 27 int res=0; 28 for(int i=1;i<=n;i++){ 29 if(fabs(Cross(a[i]-st,ed-st))<eps && ((a[i]-st)*(a[i]-ed)<=0))res++; 30 } 31 ans=max(ans,res); 32 } 33 int main(){ 34 freopen("asm_fuel.in","r",stdin); 35 freopen("asm_fuel.out","w",stdout); 36 int i,j; 37 scanf("%d",&n); 38 for(i=1;i<=n;i++) 39 scanf("%lf%lf",&a[i].x,&a[i].y); 40 for(i=1;i<=n;i++){ 41 for(j=1;j<=n;j++){ 42 if(i==j)continue; 43 solve(a[i],a[j]); 44 } 45 } 46 cout<<ans<<endl; 47 return 0; 48 }