題目描述:
給定平面上n個點,考慮所有原點(0,0)在邊界上的圓,找出最多有幾個點可以在同乙個圓的邊界上。輸出數量。
輸入:
第一行:乙個整數n (1≤n≤2000)
接下來n行每行有兩個整數x, y(|x|,|y| ≤10000),表示乙個點的座標(x,y)
輸出:
只有一行包含乙個整數,表示答案。
樣例輸入:
411
0220
22
樣例輸出:
3
思路:
列舉點,然後再列舉另一點,通過圓心公式代出圓心座標,然後求最多對於同一點一,有多少點二使得圓心同一點,答案+1即可(所有的圓都經過原點,所以不可能有同心圓的情況)。
#include
using
namespace std;
const
int maxn=
2005
;int n,ans;
double a[maxn]
,b[maxn]
,x,y;
typedef pair<
double
,double
> p;
mapint> mx;
intmain()
}printf
("%d\n"
,ans+1)
;}
圓心公式:
x=
((b[j]
-b[i]
)*b[i]
*b[j]
-a[i]
*a[i]
*b[j]
+a[j]
*a[j]
*b[i])/
(a[j]
*b[i]
-a[i]
*b[j]);
y=((a[j]
-a[i]
)*a[i]
*a[j]
-b[i]
*b[i]
*a[j]
+b[j]
*b[j]
*a[i])/
(b[j]
*a[i]
-b[i]
*a[j]
);
2020牛客暑期多校訓練營(第二場) A
時間限制 c c 3秒,其他語言6秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 題目描述 given n strings s 1,s 2,cdots,s ns1 s2 sn now define f s,t as the maximum i t...
2020牛客暑期多校訓練營(第二場
b.boundary 數學 以乙個點為基礎,暴力列舉另外乙個點就可以,就是算圓心的時候有點廢手。ac include inline long long read while c 0 c 9 return x s using namespace std define newnode treenode ...
2020牛客暑期多校訓練營(第二場)
c.cover the tree 首先你從以乙個度不為1的點作為根節點。然後你每次都連線乙個葉子節點,這樣顯然是所有的邊都可以被覆蓋。即答案為度為1的點的個數,但是這樣顯然很大,可以優化,可以相當於把根節點當作中間節點,讓葉子節點兩兩相連,顯然答案已經出來了,就是 葉子 1 2 但是怎麼兩兩配對是乙...