2020牛客暑期多校訓練營(第二場)B三點確定圓心

2022-08-14 22:18:10 字數 1081 閱讀 1208

題意:給定原點及n個點,找到乙個圓使得盡可能多的點在圓上

題解:三點可以確定乙個圓,原點固定,遍歷兩個點去確定圓心,並用map儲存圓心,當再次得到乙個相同的圓心時,map++(圓心相同,且有共點必定為同乙個圓)

#include#include

#include

#include

using

namespace

std;

const

int maxn = 2e3+10

;const

double eps=1e-5

;struct

pointa[maxn];

mapdouble,double>,int>mp;

intmain()

int ans = 0

;

for(int i=1;i<=n;i++)

double x = -(d*e-b*f)/det;

double y = -(a*f-c*e)/det;

ans = max(ans,++mp);}}

cout

<1

<

return0;

}

三點確定圓心模板:

#include using

namespace

std;

#define db double

#define pdd pairconst db eps = 1e-5

;pdd circle_center(db x1, db x2, db x3, db y1, db y2, db y3) ;

db x = -(d * e - b * f) /det;

db y = -(a * f - c * e) /det;

return;}

int main(void) {}

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 但是怎麼兩兩配對是乙...