洛谷:
資訊奧賽一本通:
時間限制: 1000 ms 記憶體限制: 65536 kb
提交數: 676 通過數: 347
乙個點每過乙個單位時間就會向四個方向擴散乙個距離,如圖。
兩個點a
'>
a、b'>b
連通,記作e(a
,b)'>e(a,b)
,當且僅當a
'>
a、b'>
b的擴散區域有公共部分。連通塊的定義是塊內的任意兩個點u、v
'>u、v
u、v都必定存在路徑e(u
,a0)
'>e(u,a0),e(
a0,a
1),…
,e(a
k,v)
'>e(a0,a1),…,e(ak,v)
。給定平面上的n給點,問最早什麼時刻它們形成乙個連通塊。
第一行乙個數n
'>
n,以下n
'>n
行,每行乙個點座標。
乙個數,表示最早的時刻所有點形成連通塊。
20 05 5
5【資料規模】
對於20%的資料,滿足1≤n
≤5;1
≤x[i
],y[
i]≤50
'>1≤n≤5;1≤x[i],y[i]≤50
1≤n≤5;1≤x[i],y[i]≤50;
對於100%的資料,滿足1≤n
≤50;1
≤x[i
],y[
i]≤10
9'>1≤n≤50;1≤x[i],y[i]≤109
1≤n≤50;1≤x[i],y[i]≤109。
no對於這道題,先算出任意兩點之間的曼哈頓距離,
然後將距離按從小到大排序,
之後對於每條邊,用並查集查詢是否已經合併,
求出需合併的最大邊長度,
將他+1然後/2就得到答案。
**:
#includestructnodea[
100001],by[100001
];int f[100001],n,lena,js;long
long ans,x[100001],y[100001
];int find(int a1)
long
long abss(long
long a1)
void px(int l,int
r)int
main();
px(1,lena);
for(int i=1;i<=n;i++)f[i]=i;
for(int i=1;i<=lena&&js)
if(find(a[i].x)!=find(a[i].y))
ans=(ans+1)/2
; printf("%d
",ans);
return0;
}
洛谷P2118資訊奧賽一本通1966 比例簡化
洛谷 資訊奧賽一本通 這個題目給出的資料範圍並不大,可以列舉所有的分母,並算出分子,判斷是否互質,再取與原分數差最小的數,得到答案。c includeint hz int q,int w int main c if c 0 c l hz c,i printf d d xa,xb return 0 我...
洛谷P1006 資訊奧賽一本通1853 傳紙條
資訊奧賽一本通 這是一道動態規劃題。可以認為同時傳了兩次,設a i j 表示走了k步,第1條走到第i行,第2條走到第j列的最大值。可以用01揹包的原理把空間壓掉1維這樣只用開2維陣列,時間複雜度o m n mn includeint a 101 101 s 101 101 m,n,a1 intmai...
資訊奧賽一本通 1183病人排隊
1183 病人排隊 題目描述 病人登記看病,編寫乙個程式,將登記的病人按照以下原則排出看病的先後順序 1.老年人 年齡 60歲 比非老年人優先看病。2.老年人按年齡從大到小的順序看病,年齡相同的按登記的先後順序排序。3.非老年人按登記的先後順序看病。輸入 第1行,輸入乙個小於100的正整數,表示病人...