2020牛客暑期多校訓練營第二場Boundary

2021-10-08 02:39:34 字數 1285 閱讀 4869

題目描述:

給定平面上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 但是怎麼兩兩配對是乙...