time limit: 20 sec memory limit: 256 mb
submit: 2309 solved: 879
[submit][status][discuss]
sam和他的妹妹sara有乙個包含n × m個方格的
**。她們想要將其的每個方格都染成紅色或藍色。
出於個人喜好,他們想要**中每個2 × 2的方形區
域都包含奇數個(1 個或 3 個)紅色方格。例如,右
圖是乙個合法的**染色方案(在列印稿中,深色代
表藍色,淺色代表紅色) 。
可是昨天晚上,有人已經給**中的一些方格染上了顏色!現在sam和sara
非常生氣。不過,他們想要知道是否可能給剩下的方格染上顏色,使得整個**
仍然滿足她們的要求。如果可能的話,滿足他們要求的染色方案數有多少呢?
輸入的第一行包含三個整數n, m和k,分別代表**的行數、列數和已被染
色的方格數目。
之後的k行描述已被染色的方格。其中第 i行包含三個整數xi, yi和ci,分別
代表第 i 個已被染色的方格的行編號、列編號和顏色。ci為 1 表示方格被染成紅
色,ci為 0表示方格被染成藍色。
輸出乙個整數,表示可能的染色方案數目 w 模 10^9得到的值。(也就是說,如果 w大於等於10^9,則輸出 w被10^9除所得的餘數)。
對於所有的測試資料,2 ≤ n, m ≤ 106
,0 ≤ k ≤ 10^6
,1 ≤ xi ≤ n,1 ≤ yi ≤ m。
3 4 3
2 2 1
1 2 0
2 3 1
資料為國內資料+國際資料+修正版
鳴謝gyz
一、如果確定了第一行,接下來的每一行只會是
變換1.上一行所有奇數列異或1後得到
變換2.上一列所有偶數列異或1後得到
二、判斷無解的情況
給定某一行的兩列a,b顏色ca,cb,我們就可以得出第一行這兩列同色(0)or反色(1)
1.奇偶性相同的列(a mod 2 = b mod 2),第一行a,b列顏色關係為ca ^ cb
2.奇偶性相同的列(a mod 2 <> b mod 2),設第一行到此行進行p1次變換1,p2次變換2
則p1+p2=行號-1
第一行a,b列顏色關係為cx^cy^(行號-1)(沒理解,待補)
第一種情況:藍色的點是第一行的編號,d與a是在同一列,那麼e的顏色就是唯一的
第二種情況:對於fg兩個點,他們的關係是制約的,所以他們在乙個聯通塊裡,但是計算答案*2
#include#include#include#include#include#include#include#include#include#include#include#define ll long long
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define swap(x,y,t) ( (t)=(x),(x)=(y),(y)=(t) )
const int p=1e9;
using namespace std;
int n,m,k,tot;
int fa[1000005],f[1000005],c[1000005];
bool mark[1000005],vis[1000005];
vectorr[1000005],col[1000005];
ll read()
while(ch>='0'&&ch<='9')
return x*f;
}int qpow(ll a,ll b)
int find(int x)
int find2(int x)
bool add(int a,int b,int f)
}int main()
for(int i=1;i<=n;i++)
for(int j=1;j
}for(int i=1;i<=m;i++) if(fa[i]==i&&vis[i]==0) tot++;
for(int i=2;i<=n;i++) if(!mark[i]) tot++;
printf("%d\n",qpow(2,tot));
}
BZOJ2303 Apio2011 方格染色
sam和他的妹妹sara有乙個包含n m個方格的 她們想要將其的每個方格都染成紅色或藍色。出於個人喜好,他們想要 中每個2 2的方形區 域都包含奇數個 1 個或 3 個 紅色方格。例如,右 圖是乙個合法的 染色方案 在列印稿中,深色代 表藍色,淺色代表紅色 可是昨天晚上,有人已經給 中的一些方格染上...
bzoj 2303 Apio2011 方格染色
傳送門 sam和他的妹妹sara有乙個包含n m個方格的 她們想要將其的每個方格都染成紅色或藍色。出於個人喜好,他們想要 中每個2 2的方形區域都包含奇數個 1 個或 3 個 紅色方格。例如,右圖是乙個合法的 染色方案 在列印稿中,深色代表藍色,淺色代表紅色 可是昨天晚上,有人已經給 中的一些方格染...
bzoj 2303 Apio2011 方格染色
很神奇的思路,膜一發大佬 設s i,j a i j a i 1 j a i j 1 a i 1 j 1 那麼將s 1,1 s 1,2 s 1,j s 2,1 s 2,j s i,j 展開,對於i相同的一行 如s 1,1 s 1,2 s 1,j 我們可以先然看出其結果為開頭的a i 1 a i j 同...