最后面的公式
#include<bits/stdc++.h>
using namespace std;
const int N=7e2+10,M=(1<<32-1);
struct st{
int x,y;
}s[N];
map<pair<double,double>,int>m;
/*
5
1 1
2 2
3 3
4 4
5 5
7
1 1
2 2
3 3
1 0
2 1
3 1
4 0
*/
int main()
{
int n;
int x1,y1;
int x2,y2;
int len=0,max1=0;
double k=0;//斜率
double b=0;//截距
pair<double,double>t;
sx mid1,mid2;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>s[i].x>>s[i].y;
}
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
x1=s[i].x;
y1=s[i].y;
x2=s[j].x;
y2=s[j].y;
if(x2!=x1)
{
k=1.0*(y2-y1)/(x2-x1);
b=1.0*y1-1.0*(y2-y1)*x1/(x2-x1);
}
else
{
k=(double)M;
b=1.0*x1;
}
t.first=k,t.second=b;
m[t]++;
}
}
map<pair<double,double>,int>::iterator i;
for(i=m.begin();i!=m.end();i++)
//cout<<i->second<<" ",
max1=max(max1,i->second);
//cout<<endl;
//cout<<m.size()<<endl;
cout << (1.0 + sqrt(1 + 8 * max1)) / 2.0 << endl;//这个公式什么意思啊?我把求的最值套入这个公式(dalao)中就AC了。AC之后一脸懵,这个什么意思
return 0;
}