原題:
題意:
給出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....