[APIO2011] 方格染色

設a[i,j]=0/1表示格子的顏色,由題意,f(i,j)=a[i,j]^a[i+1,j]^a[i,j+1]^a[i+1,j+1]=1。枚舉

對於約束a[x,y]=c(x>1,y>1), ^^f(i,j)(1<=i<=x,1<=j<=y)=a[1,1]^a[1,y]^a[x,1]^a[x,y]=((x-1)*(y-1))&1顏色

考慮枚舉a[1,1]的值,則約束a[x,y]=c轉變爲a[1,y]^a[x,1]=(((x-1)*(y-1))&1)^a[1,1]^c,即知道了a[1,y]和a[x,1]的異同。

不妨用帶權並查集維護這樣的異同關係,注意到一旦肯定了a[1,..]和a[..,1]就能肯定出整個棋盤,所以答案爲pow(2,獨立塊數目)

而對於a[x,1]/a[1,y]=c(x>1,y>1)這樣的約束……能夠和假設的a[1,1]綁定……

再對於a[1,1]=c這樣的……就沒什麼假設的了

注意若是標號a[i,1]爲i,a[1,j]爲j+n,有前提「1,n+1是相同的」。

鴿子王從不貼代碼

相關文章
相關標籤/搜索