JZOJ3301 家族 並查集

2021-09-25 00:02:29 字數 1451 閱讀 1042

乙個無向圖的每條邊都有乙個邊權,選擇乙個區間[l,

r]

[l,r]

[l,r

],然後把這個圖中邊權不在[l,

r]

[l,r]

[l,r

]的邊全部刪掉。會形成多個連通塊。大小為i

ii的連通塊的權值為k

ik_i

ki​,求乙個r−l

r-lr−

l盡量小的區間使得剩餘連通塊的權值和≥

s\geq s

≥s。暴力想法:列舉左端點,然後二分右端點,用並查集判斷這個區間是否滿足條件。時間複雜度o(m

2log⁡m

)o(m^2\log m)

o(m2

logm

),期望得分50pt

s50pts

50pts。

但是我們發現右端點為r

rr時,是可以在很快的時間內轉移為右端點為r+1

r+1r+

1的情況。所以我們可以固定左端點,然後指標從左往右掃瞄右端點,每次把權值和進行一下簡單的轉移就可以了。時間複雜度o(m

2)

o(m^2)

o(m2)。

#include

#include

#include

using

namespace std;

typedef

long

long ll;

const

int n=

5010

;int n,m,x,y,tot,father[n]

,cnt[n]

;ll love[n]

,ans,s,z;

struct edge

e[n]

;void

add(

int from,

int to,ll dis)

intfind

(int x)

bool

cmp(edge x,edge y)

intmain()

sort

(e+1

,e+1

+m,cmp)

; ans=

1e17

;for

(int i=

1;i<=m;i++)}

if(ans<

1e17

)printf

("%lld\n"

,ans)

;else

printf

("t_t\n");

return0;

}

我真是太菜了,考試3h3h

3h看錯題目,最後十幾分鐘才發現,然後暴力還寫掛45pt

s45pts

45pt

s。。。

q wq

qwqqw

q

並查集 Rqnoj331 家族

題目描述 若某個家族人員過於龐大,要判斷兩個是否是親戚,確實還很不容易,現在給出某個親戚關係圖,求任意給出的兩個人是否具有親戚關係。規定 x和y是親戚,y和z是親戚,那麼x和z也是親戚。如果x,y是親戚,那麼x的親戚都是y的親戚,y的親戚也都是x的親戚。輸入格式 第一行 三個整數n,m,p,n 50...

vijos P1034 家族(並查集)

p1034家族 accepted 標籤 顯示標籤 若某個家族人員過於龐大,要判斷兩個是否是親戚,確實還很不容易,現在給出某個親戚關係圖,求任意給出的兩個人是否具有親戚關係。規定 x和y是親戚,y和z是親戚,那麼x和z也是親戚。如果x,y是親戚,那麼x的親戚都是y的親戚,y的親戚也都是x的親戚。第一行...

codevs1073 家族 並查集

時間限制 1 s 空間限制 128000 kb 題目等級 大師 master 題解 檢視執行結果 若某個家族人員過於龐大,要判斷兩個是否是親戚,確實還很不容易,現在給出某個親戚關係圖,求任意給出的兩個人是否具有親戚關係。規定 x和y是親戚,y和z是親戚,那麼x和z也是親戚。如果x,y是親戚,那麼x的...