2020第十一屆藍橋杯7月省賽J題

2021-10-25 18:48:06 字數 810 閱讀 3886

題目描述:

本題思路:這道題是乙個帶權並查集,當初一看到這個題目的時候應該就要想到並查集,因為有權值的存在,所以我們可以想到帶權並查集。

我們如果普通維護當前結點與父結點之間的關係的話,很明顯非常難維護,但是如果我們維護當前結點與祖先結點之間的關係的話,那就會好很多,我們每次把更新操作都在祖先結點上面做,然後我們維護乙個當前結點與祖先結點之間的差值,我們最後每個結點的值就是祖先結點的值+差值。

我們在查詢祖先結點的時候有路徑壓縮,所以同時要修改差值d。

操作1:合併操作,如果當前操作的兩個結點不連通,那麼需要更新差值d

操作2:直接在祖先結點上面更新即可。

**部分:

#include

using

namespace std;

const

int n =

1e4+10;

int fa[n]

, d[n]

, now[n]

;int n, m;

intfind

(int x)

return fa[x];}

intmain()

while

(m--)}

else

}for

(int i =

1; i <= n; i++

)else

} cout << endl;

return0;

}

2020第十一屆藍橋杯7月省賽I題

題目描述 本題思路 這道題,暴力過30 的樣例,拿的了7分的樣子,要全過的話那得dp,寫數學式子分析,找到盡可能減少複雜度的方法。先上暴力 這道題暴力寫應該很容易的 include using namespace std const int n 1e5 10 typedef long long ll...

第十一屆藍橋杯

問題描述 小藍要為一條街的住戶製作門牌號。這條街一共有 2020 位住戶,門牌號從 1 到 2020 編號。小藍製作門牌的方法是先製作 0 到 9 這幾個數字字元,最後根據需要將字 符貼上到門牌上,例如門牌 1017 需要依次貼上字元 1 0 1 7,即需要 1 個 字元 0,2 個字元 1,1 個...

第十一屆藍橋杯省賽 走方格

時間限制 1.0s 記憶體限制 512.0mb 本題總分 20 分 問題描述 在平面上有一些二維的點陣。這些點的編號就像二維陣列的編號一樣,從上到下依次為第 1 至第 n 行,從左到右依次為第 1 至第 m 列,每乙個點可以用行號和列號來表示。現在有個人站在第 1 行第 1 列,要走到第 n 行第 ...