vijos P1443 銀河英雄傳說

2021-07-16 06:53:23 字數 949 閱讀 7066

並查集 +瞎搞

思路

對於合併和查詢是否存在於同一集合好說

關鍵就是查詢之間的戰艦數量的問題

可以利用樹上字首和的思想來實現

用sum[i]表示i節點到根的距離

那麼考慮維護

在a隊接到b隊的過程中 需要維護a的節點到根的距離

很顯然a中所有節點的sum需要加上b中節點的個數

那就再開乙個tot[i]表示i節點為根節點個數

而且可以先不更新 在要用到a的子節點時再遞迴更新他們的sum值

**

#include #include #include using namespace std;

const int maxn=30001;

char c;

int fa[maxn],t,a,b,sum[maxn],tot[maxn];

int abs(int x)

int find(int x)

int main()

scanf("%d",&t);

while(t--)

else

}}

歡迎指出bug

end。

銀河英雄傳說

公元五八 一年,地球居民遷至金牛座 第二行星,在那裡發表銀河聯邦創立宣言,同年改元為宇宙歷元年,並開始向銀河系深處拓展。宇宙歷七九九年,銀河系的兩大軍事集 在巴公尺利恩星域爆發戰爭。泰山壓頂集 宇宙艦隊司令萊因哈特率領十萬餘艘戰艦出征,氣吞山河集 點名將楊威利組織麾下三萬艘戰艦迎敵。楊威利擅長排兵布...

銀河英雄傳說

公元五八 一年,地球居民遷至金牛座 第二行星,在那裡發表銀河聯邦創立宣言,同年改元為宇宙歷元年,並開始向銀河系深處拓展。宇宙歷七九九年,銀河系的兩大軍事集 在巴公尺利恩星域爆發戰爭。泰山壓頂集 宇宙艦隊司令萊因哈特率領十萬餘艘戰艦出征,氣吞山河集 點名將楊威利組織麾下三萬艘戰艦迎敵。楊威利擅長排兵布...

並查集 銀河英雄傳說

description 公元五八 一年,地球居民遷移至金牛座 第二行星,在那裡發表銀河聯邦創立宣言,同年改元為宇宙歷元年,並開始向銀河系深處拓展。宇宙歷七九九年,銀河系的兩大軍事集團在巴公尺利恩星域爆發戰爭。泰山壓頂集團派宇宙艦隊司令萊因哈特率領十萬餘艘戰艦出征,氣吞山河集團點名將楊威利組織麾下三萬...