我們考慮用並查集來維護戰艦的情況。
同時,我們用乙個$d$陣列來記錄$x$與$fa[x]$之間的距離。再用$size$陣列記錄戰艦當前所在列的戰艦數。
易知兩艘在同一列的戰艦之間隔著$|d[x]-d[y]|-1$艘戰艦。
#include#define n 30010
using namespace std;
int t,x,y;
int fa[n],d[n],size[n];
char op;
int find(int x)
int root=find(fa[x]);
d[x]+=d[fa[x]];
return fa[x]=root;
}void init()
return;
}void merge(int x,int y)
void judge(int x,int y)
else
return;
}void work()
else if(op=='c')
return;
}int main()
return 0;
}
luogu1196 銀河英雄傳說
題目描述 公元五八 一年,地球居民遷至金牛座 第二行星,在那裡發表銀河聯邦創立宣言,同年改元為宇宙歷元年,並開始向銀河系深處拓展。宇宙歷七九九年,銀河系的兩大軍事集團在巴公尺利恩星域爆發戰爭。泰山壓頂集團派宇宙艦隊司令萊因哈特率領十萬餘艘戰艦出征,氣吞山河集團點名將楊威利組織麾下三萬艘戰艦迎敵。楊威...
P1196 銀河英雄傳說
這題真的很經典,我wa了三次,最後一次才ac 因為這道題是很有技術含量的,能自己寫出來真的很厲害 不是在誇自己 如果只是粗略的去看題解或者抄題解 倒是可以用來矇騙自己 那這道題就失去意義了。下面的 每一句話,都是值得深刻推敲的。舉幾個例子 int find int x 這裡就不能直接寫par x f...
洛谷 1196 銀河英雄傳說
傳送門 寫題一時wa了時間不多了計畫還沒完成先放下去寫道水題好像是正確的選擇。對每個點記錄它到當前代表元的距離,初始都為0 到自己 合併時之前代表元的距離就等於它要合併的那個集合的size。路徑壓縮時先加上父親到代表元的距離,再把父親換成代表元。twenty include include incl...