vijos1944 琵琶湖(並查集)

2021-07-30 13:48:22 字數 833 閱讀 2090

題梗

琵琶島被分割為了 n x m 的格仔圖。每一塊格仔區域都有著確定的高度。不幸的是,琵琶湖的水位最近開始**了,第 i 年湖面的高度將**至 i 公尺。另外一方面,琵琶島是由鬆軟的土質形成的,且琵琶湖的湖水可以自由滲入到其中。也就是說,如果有一塊格仔區域的高度不超過當前的水位,則將被淹沒。相連的未被淹沒的格仔(有著公共邊的格仔區域)將組成一塊未被淹沒的區域。

求對於指定的某一年來說,琵琶島被分割為了多少塊未被淹沒的區域。(ah2015t4)

#include#includeusing namespace std;

const int dir[4][2]=,,,};

const int maxn=1000100;

struct nodea[maxn];

int k,q[maxn];

int n,m,fa[maxn],sum[maxn];

int book[1010][1010];

int find(int x)

int pd(int x,int y)

void merge(int x,int y)

int cmp(node a,node b)

int main()

sort(a+1,a+n*m+1,cmp);

cin>>k;

for (int i=1;i<=k;i++)

cin>>q[i];

int now=1,ans=0;

for (int i=k;i>=1;i--)

}now++;

} sum[i]=ans;

} for (int i=1;i<=k;i++) cout<

並查集 vijos1944琵琶湖

vijos1944 下午除了訂正只做了這題啊。這題我感覺我的xjb演算法已經有點用處了 雖然我不知道別人怎麼搞的,但是我download覺得我的做法很玄 首先,並查集並不支援斷開,所以我們不可能去順序模擬題意 因此倒序 在ti時會有哪些點浮出水面 那首先我們二分出點 x,y 在什麼時刻浮出水面,然後...

POJ 1944 並查集(模擬)

思路 肯定是要列舉斷點的。就看列舉完斷點以後怎麼處理了 1.用類似並查集的思想 f x max f x y 表示x和y相連 一定要注意取max,血的教訓 複雜度o np 2.猥瑣思路 每回列舉完斷點以後sort一遍 用左右指標掃一遍就ok.需要高超的卡時技巧就能過 複雜度 o nplogp by s...

並查集 以vijos《家族》為例

並查集可以用來查詢兩個點是否在同乙個集合中,相比於用圖dfs,效率大大提公升,這裡放兩個截圖對比一下 怎麼樣,時間差距很大吧!其實並查集的思想就是找出要合併的點的最大公共祖先,這樣我們在判斷兩個點是不是在同乙個集合裡只要判斷他們的祖先是不是相同就行了。這裡先講並查集的幾個操作 1 初始化 void ...