乙個圓形300公尺的操場,外面位置無數排的椅子,然後給出一些條件,形式為: ab
x abx
意思為a在b的順時針方向第x個,求有多少個要求無法滿足
用並查集,然後乙個fa
r far
陣列表示離它的fa
ther
f at
he
r有多遠,每次壓縮路徑。之後如果輸入的a和b在乙個分量內就進行判斷 (f
ar[x
]+w)
%≠fa
r[y]
( fa
r[x]
+w)%
≠far
[y
]這樣就累加不滿足的條件。
不然就進行連線 (f
ar[x
]−fa
r[y]
+w+300)%
300 (fa
r[x]
−far
[y]+
w+
300)
%300
這樣計算連線之後的距離,而且防止了負數情況
#include
#include
using
namespace
std;
int n,m,x,y,w,father[50001],far[50001],s;
int find(int x)
else
}void unionn(int x,int y,int w)
int main()
else
unionn(x,y,w);
//連線
}printf("%d",s);
}
並查集 jzoj1503 體育場
description 觀眾席每一行構成乙個圓形,每個圓形由300個座位組成,對300個座位按照順時針編號1到300,且可以認為有無數多行。現在比賽的組織者希望觀眾進入場地的順序可以更加的有趣,在門票上並沒有規定每個人的座位,而是與這個圈中某個人的相對位置,可以坐在任意一行。門票上標示的形式如下 a...
JZOJ B組 體育場
觀眾席每一行構成乙個圓形,每個圓形由300個座位組成,對300個座位按照順時針編號1到300,且可以認為有無數多行。現在比賽的組織者希望觀眾進入場地的順序可以更加的有趣,在門票上並沒有規定每個人的座位,而是與這個圈中某個人的相對位置,可以坐在任意一行。門票上標示的形式如下 a b x 表示第b個人必...
體育場 帶權並查集
description 觀眾席每一行構成乙個圓形,每個圓形由300個座位組成,對300個座位按照順時針編號1到300,且可以認為有無數多行。現在比賽的組織者希望觀眾進入場地的順序可以更加的有趣,在門票上並沒有規定每個人的座位,而是與這個圈中某個人的相對位置,可以坐在任意一行。門票上標示的形式如下 a...