How many times(最多圓覆蓋的點)

2021-09-25 10:35:57 字數 3031 閱讀 5445

原題:

題意:

給出n個圓,求某個點使得被覆蓋的圓數量最多。

解析:

模擬退火過不了,可以參考一下~

先二分答案k

kk,然後對於答案去跑模擬退火,在計算總距離的時候,只拿出最近的k

kk個點的距離和(圓內則為0),那麼這個時候退火就會往更多的點去跑。本地跑的話,大資料都沒有問題,應該是對的,但是套個二分時間複雜度就不行了。

#include

using

namespace std;

#define ll long long

#define ls (rt<<1)

#define rs (rt<<1|1)

#define rep(i,a,b) for(int i=a;i<=b;i++)

#define rrep(i,a,b) for(int i=a;i>=b;i--)

ll read()

const

int maxn=

109;

const

double eps=

1e-6

;const

double t0=

1e4;

const

double delta=

0.97

;const

double di[4]

[2]=

,,,}

;int n;

double x[maxn]

,y[maxn]

,r[maxn]

;int

dcmp

(double x)

inline

double

dis(

double x,

double y,

double x2,

double y2)

double dis[maxn]

;double

sumofdis

(double x,

double y,

int num)

sort

(dis+

1,dis+

1+n)

;rep

(i,1

,num)sum+

=dis[i]

;return sum;

}intsa(

int num)}}

t *= delta;

//退火

}int ct=0;

rep(i,

1,n)

return ct;

}int

main()

int ans=1;

int res=

sa(ans+1)

;int l=

1,r=n;

while

(l<=r)

else

}printf

("%d\n"

,ans);}

}

最大團也不行,a交b,b交c,a交c,不一定推出a交b交c。

正解是列舉兩個圓的交點去跑。

正確性顯然,交一定是一塊面積,周圍一定有這些圓的交點。

#include

using

namespace std;

#define ll long long

#define ls (rt<<1)

#define rs (rt<<1|1)

#define rep(i,a,b) for(int i=a;i<=b;i++)

#define rrep(i,a,b) for(int i=a;i>=b;i--)

ll read()

const

int maxn=

109;

const

double eps=

1e-6

;struct point

a[maxn]

;int

dcmp

(double x)

typedef

struct point point;

double

xmult

(point p1,point p2,point p0)

double

distance

(point p1,point p2)

//點到直線的距離

double

disptoline

(point p,point l1,point l2)

//求兩直線交點

point intersection

(point u1,point u2,point v1,point v2)

intintersect_circle_circle

(point c1,

double r1,point c2,

double r2)

void

intersection_line_circle

(point c,

double r,point l1,point l2,point& p1,point& p2)

void

intersection_circle_circle

(point c1,

double r1,point c2,

double r2,point& p1,point& p2)

int n;

double r[maxn]

;int

main()

int ans=1;

rep(i,

1,n)

ans=

max(ans,ct)

; ct=0;

rep(k,

1,n)

ans=

max(ans,ct);}

}printf

("%d\n"

,ans);}

}

poj1981 單位圓最多覆蓋點

計算幾何題。昨天的比賽題,這類題資料不會特別大,只要能推出公式,就能解。比賽時,只顧著找模版,沒有認真去分析題。期間想到過解題思路,由於不自信,沒有去實現!解題思路 根據最遠兩點確定圓心,判斷圓內最多的點數。不斷修改圓心,記錄最大的點數。遍歷一遍就是答案。趁著這幾天總結一下學過的一點計算幾何,加油!...

圓(凸多邊形最多可劃分成為的區域)

簽到題來了,送你們乙個python秒的題。apojacsleam來到了oi大陸,經過了連年征戰,成為了一方國王。apojacsleam把他的王國命名為 apo國 apo國的領土是乙個標準的圓形。apojacsleam現在想封賞他的大臣,他在國境上建立了n個城市,要求他的大臣對這n個城市兩兩之間修建道...

最多約數問題

問題描述 正整數x的約數是能整除x的正整數。正整數x的約數個數記為div x 例如,10有4個約數 1 2 5 10。設a和b是兩個正整數,試計算a和b之間約數個數最多的數x。演算法設計 對於給定的2個正整數a b,程式設計計算a 和 b 之間約數個數最多的數。資料輸入 輸入資料由檔名為input....