時間限制: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 }