題目描述:
本題思路:這道題是乙個帶權並查集,當初一看到這個題目的時候應該就要想到並查集,因為有權值的存在,所以我們可以想到帶權並查集。
我們如果普通維護當前結點與父結點之間的關係的話,很明顯非常難維護,但是如果我們維護當前結點與祖先結點之間的關係的話,那就會好很多,我們每次把更新操作都在祖先結點上面做,然後我們維護乙個當前結點與祖先結點之間的差值,我們最後每個結點的值就是祖先結點的值+差值。
我們在查詢祖先結點的時候有路徑壓縮,所以同時要修改差值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 行第 ...