並查集 +瞎搞
思路
對於合併和查詢是否存在於同一集合好說
關鍵就是查詢之間的戰艦數量的問題
可以利用樹上字首和的思想來實現
用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 公元五八 一年,地球居民遷移至金牛座 第二行星,在那裡發表銀河聯邦創立宣言,同年改元為宇宙歷元年,並開始向銀河系深處拓展。宇宙歷七九九年,銀河系的兩大軍事集團在巴公尺利恩星域爆發戰爭。泰山壓頂集團派宇宙艦隊司令萊因哈特率領十萬餘艘戰艦出征,氣吞山河集團點名將楊威利組織麾下三萬...