并查集+数学

这道题网上好像有两种解法。

这位写的很可读:http://blog.csdn.net/unicornt_/article/details/51901225

然后看完大概就懂了做法,但是实现上还有很多细小的地方。

cnt要-1,因为第一行和第一列会算两次。

数组要开四倍。

至于为什么要拆成两个点,这是因为分开考虑01.

为什么两个flag都要赋值?因为有可能根是放在列上了,就判不到了。

还需要思考一下。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = ;
const ll mod = ;
struct dsu {
int fa[N * ];
void ini(int n)
{
for(int i = ; i <= n; ++i)
fa[i] = i;
}
int find(int x)
{
return x == fa[x] ? x : fa[x] = find(fa[x]);
}
void connect(int x, int y)
{
fa[find(x)] = find(y);
}
bool same(int x, int y)
{
return find(x) == find(y);
}
} u;
int n, m, k, s = -;
int x[N], y[N], c[N];
ll ans;
bool flag[N * ];
ll power(ll x, ll t)
{
ll ret = ;
for(; t; t >>= , x = x * x % mod) if(t & ) ret = ret * x % mod;
return ret;
}
void solve(int s)
{
u.ini( * n + * m + );
u.connect(, + * n);
u.connect(, + * n + );
for(int i = ; i <= k; ++i)
{
int p = ;
if(x[i] % == && y[i] % == ) p = ;
p = p ^ c[i] ^ s;
if(p)
{
u.connect(x[i] * , y[i] * + + * n);
u.connect(x[i] * + , y[i] * + * n);
}
else
{
u.connect(x[i] * , y[i] * + * n);
u.connect(x[i] * + , y[i] * + * n + );
}
}
int cnt = ;
memset(flag, , sizeof(flag));
for(int i = ; i <= n; ++i)
{
if(u.same(i * , i * + ))
return;
if(!flag[u.find(i * )])
{
flag[u.find(i * )] = flag[u.find(i * + )] = ;
++cnt;
}
}
for(int i = ; i <= m; ++i)
{
if(u.same(i * + * n, i * + * n + ))
return;
if(!flag[u.find(i * + * n)])
{
flag[u.find(i * + * n)] = flag[u.find(i * + * n + )] = ;
++cnt;
}
}
ans = (ans + power(2ll, cnt - )) % mod;
}
int main()
{
scanf("%d%d%d", &n, &m, &k);
for(int i = ; i <= k; ++i)
{
scanf("%d%d%d", &x[i], &y[i], &c[i]);
if(x[i] == && y[i] == ) s = c[i];
}
if(s != ) solve();
if(s != ) solve();
printf("%lld\n", ans);
return ;
}

bzoj2303的更多相关文章

  1. [BZOJ2303][Apio2011]方格染色

    [BZOJ2303][Apio2011]方格染色 试题描述 Sam和他的妹妹Sara有一个包含n × m个方格的 表格.她们想要将其的每个方格都染成红色或蓝色. 出于个人喜好,他们想要表格中每个2 × ...

  2. BZOJ2303 [Apio2011]方格染色 并查集

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ2303 题意概括 现在有一个N*M矩阵,矩阵上只能填数字0或1 现在矩阵里已经有一些格子被填写了数字 ...

  3. BZOJ2303 APIO2011方格染色(并查集)

    比较难想到的是将题目中的要求看做异或.那么有ai,j^ai+1,j^ai,j+1^ai+1,j+1=1.瞎化一化可以大胆猜想得到a1,1^a1,j^ai,1^ai,j=(i-1)*(j-1)& ...

  4. BZOJ2303 APIO2011方格染色

    这题太神了 首先我们可以发现只有当i和j都是偶数时a[1][1]^a[1][j]^a[i][1]^a[i][j]=1才满足情况,其它时都为0 所以我们可以先把i和j都为偶数的地方^1变为0 下面才是最 ...

  5. BZOJ2303: [Apio2011]方格染色 【并查集】

    Description Sam和他的妹妹Sara有一个包含n × m个方格的表格.她们想要将其的每个方格都染成红色或蓝色.出于个人喜好,他们想要表格中每个2 × 2的方形区域都包含奇数个(1 个或 3 ...

  6. [转载]hzwer的bzoj题单

    counter: 664BZOJ1601 BZOJ1003 BZOJ1002 BZOJ1192 BZOJ1303 BZOJ1270 BZOJ3039 BZOJ1191 BZOJ1059 BZOJ120 ...

  7. BZOJ刷题列表【转载于hzwer】

    沿着黄学长的步伐~~ 红色为已刷,黑色为未刷,看我多久能搞完吧... Update on 7.26 :之前咕了好久...(足见博主的flag是多么emmm......)这几天开始会抽时间刷的,每天几道 ...

随机推荐

  1. JS——事件的绑定与解绑

    1.绑定形式 ele.addEventListener(evtName, fn) ele["on" + evtName] = function () {} ele.onclick ...

  2. JS——冒泡排序

    核心思想: 1.外层for循环控制比较的轮数 2.内层for循环控制每轮比较的次数 3.外层每进行一轮比较,内层就少一次比较,因为外层每进行一轮比较都会产生一个最大值 <script> v ...

  3. hint: not have locally. This is usually caused by another repository pushing

    git 提交代码前先pull代码,否则会报如下错误 wangju@wangju-HP-348-G4:~/test/reponselogiccheck$ git statusOn branch mast ...

  4. 2019 支付宝App支付 --- PHP

    SDK下载:https://docs.open.alipay.com/54/106370/;联系客服:https://cschannel.alipay.com/newPortal.htm?scene= ...

  5. Django - ORM创建基本类

    DBFirst CodeFirst 创建类 1.根据类自动创建数据库表 在app下的models.py中创建表 创建数据库之前,需要在django下的setting.py模块中的INSTALLED_A ...

  6. nexus3.x启动不起来

    1.首先说两种启动命令,网上最多的是用./nexus start.这种是后台启动,看不到实时日志:./nexus run 是实时启动可以看到日志. 2.linux下解压nexus-3.6.2-01-u ...

  7. How To: Multipath Linux x86-64 Release 6.4

    [root@node01 ~]# lsb_release -a LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0 ...

  8. [luogu2594 ZJOI2009]染色游戏(博弈论)

    传送门 Solution 对于硬币问题,结论是:当前局面的SG值等于所有背面朝上的单个硬币SG值的异或和 对于求单个背面朝上的硬币SG值...打表找规律吧 Code //By Menteur_Hxy ...

  9. [LUOGU]4932 浏览器

    \(\_\_stdcall\)大佬出的题\(Orz\) 我们惊奇地发现,加入\(\_\_popcount(x)\)和\(\_\_popcount(y)\)的奇偶数性相同,那么\(\_\_popcoun ...

  10. js兼用性

    1.document.formName.item("itemName") 问题 说明:IE下,可以使用document.formName.item("itemName&q ...