洛谷P1661 資訊奧賽一本通1437 擴散

2022-05-29 07:48:14 字數 1571 閱讀 6529

洛谷:

資訊奧賽一本通:

時間限制: 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

行,每行乙個點座標。

乙個數,表示最早的時刻所有點形成連通塊。

2

0 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就得到答案。

**:

#includestruct

nodea[

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的正整數,表示病人...