bzoj2823 訊號塔 隨機增量演算法

2021-07-10 05:43:04 字數 923 閱讀 1634

看wc課件好像zhj的ppt裡面有這道題目?然而講得太簡略了看不懂。

然後扒了扒黃學長的**發現好像很簡單。。。

實際上就是暴力列舉三個點,列舉到第i個點時看能不能放到當前的圓裡面,不能就移前面i-1個點和i組成乙個圓。注意這裡i<=3。然後推一下外心就好了。

考慮每乙個節點,在邊上的期望概率為(1/n),然後列舉完第乙個點,當且僅當它在邊上才會繼續列舉第二個點。如果列舉第二個點之後的期望時間複雜度為o(n),那麼對於第乙個點時間複雜度為o(n*1/n*n)=o(n)。顯然列舉第三個點是o(n)的,因此同理列舉第二個點是o(n),第乙個也是o(n)。

一開始的時候隨機打亂。(雖然這樣好像變慢呢?)

ac**如下:

#include#include#include#include#define eps 1e-6

using namespace std;

struct pointa[500005]; int n;

double dist(point u,point v)

point centre(point u,point v)

double sqr(point u)

point calc(double x,double y,double z,double u,double v,double w)

point centre(point u,point v,point w)

int main()

point o=a[1]; double r=0;

for (i=2; i<=n; i++) if (dist(o,a[i])>r+eps)

} }printf("%.2f %.2f %.2f\n",o.x,o.y,r);

return 0;

}

by lych

2016.3.1

POJ 2823單調佇列

g tle了,c 5329ms險過。用g 交了幾遍,總覺得沒錯,也沒改就反覆交了,傻裡傻氣的。再在網路上找了一 g ce後c 過了,就也試著用c 交自己的 了,過了。要不咱研究研究g 和c 好了 以上全是廢話!include using namespace std const int nn 1000...

單調佇列 poj2823

這段話 初談這個話題,相信許多人會有一種似有所悟,但又不敢確定的感覺。沒錯,這正是因為其中 單調 一詞的存在,所謂單調是什麼,學過函式的people都知道單調函式或者函式的單調性,直白一點說單調就是一直增或一直減。例如 1,3,5,9就是乙個單調增數列,數列中不存在後乙個數比前乙個數小的現象。那麼同...

HDU 2823 旋轉卡殼

開始 自己 做 不是 wa 就是 tle 後 來 還是看別人 的 注意 此 下面 c ac g tle include include include include using namespace std define n 1005 define pr 1e 8 struct tpoint tpo...