題意:給定原點及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 usingnamespace
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 但是怎麼兩兩配對是乙...