解題思路:hash離散化+并查集
首先我們不考慮離散化:s[x]表示(root[x],x]區間1的個數的奇偶性,0-偶數,1-奇數
每個輸入區間[a,b],首先判斷a-1與b的根節點是否相同
a)如果相同表示(a-1,b]之間1的個數奇偶性已知s((a-1,b])=s[a-1]^s[b],此時只需簡單判斷即可
b)如果不同,我們需要合并兩個子樹,我們將root較大的子樹(例root[a])合并到root較小的子樹(例root[b]),且此時s[root[a]]=s[a]^s[b]^s((a-1,b])
在路徑壓縮的過程中s[i]=s[i]^s[root[i]],s[root[i]]為(root[root[i]], root[i]]區間內1個數的奇偶性,例(a, b]區間1的個數為偶數,(b, c]區間1的個數為奇數,(a, c]之間1的個數顯然為0^1=1奇數
原文:POJ 1733 Parity game
幾次市賽由于敲代碼速度跟不上思維而慘掛。。。。。。問題很嚴重啊。。。。。。