题目:

http://www.lydsy.com/JudgeOnline/problem.php?id=2303

题解:

  很神奇的思路,膜一发大佬http://www.cnblogs.com/HHshy/p/5840018.html#undefined

  设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],同时其在下一层的异或结果也是a[i+1][1]^a[i+1][j],那么再把每一行合并,最终我们得到此式的化简:a[1][1]^a[i+1][1]^a[1][j+1]^a[i+1][j+1],然后当i,j均为奇数时,我们得知a[1][1]^a[i+1][1]^a[1][j+1]^a[i+1][j+1]==1,否则为0,再把那个+1缩掉,即:((i|j)&1)==0时,a[1][1]^a[i][1]^a[1][j]^a[i][j]==1,否则为0.设a[1][1]^a[i][1]^a[1][j]^a[i][j]为z,再移一下项,我们得到z^a[1][1]^a[i][j]==a[i][1]^a[1][j],然后枚举a[1][1]的值,再用并查集把有关的a[i][1]与a[1][j]连接起来,判断是否会出现矛盾,如果没有矛盾,我们就得到了一部分答案。最后把两个a[1][1]值的贡献加和即可。

 #include<cstdio>
const int N=(int )1e6+,mod=(int) 1e9;
inline int read(void ){
int s=;char ch=getchar();
while(ch<''||ch>'') ch=getchar();
while(ch>=''&&ch<='') s=s*+(ch^),ch=getchar();
return s;
} int n,m,k;
int x[N],y[N],z[N],g[N],f[N];
inline int find(int x){
if(x==f[x]) return x;
int t=find(f[x]);g[x]^=g[f[x]];
return f[x]=t;
}
inline int solve()
{
for(int i=;i<=n+m;i++) f[i]=i,g[i]=;
f[n+]=;
for (int i=;i<=k;i++)
{
int u=find(x[i]),v=find(y[i]+n),t=g[x[i]]^g[y[i]+n]^z[i];
if (u!=v) f[u]=v,g[u]=t;
else if (t) return ;
}
int sum=;
for (int i=;i<=n+m;i++)
if (f[i]==i)
if (!sum) sum=;
else {
sum<<=;
sum-=mod*(sum>mod);
}
return sum;
}
int main(){
bool e[]={,};
n=read(),m=read(),k=read();
for(int i=;i<=k;i++){
x[i]=read(),y[i]=read(),z[i]=read();
if(!((x[i]^)|(y[i]^))){
e[z[i]]=,i--,k--;continue;
}
if(!((x[i]|y[i])&)) z[i]^=;
}
int ans=;
if(e[]) ans=solve();
if(e[]){
for(int i=;i<=k;i++)
if((x[i]^)&&(y[i]^)) z[i]^=;
ans+=solve();
ans-=(ans>mod)*mod;
}
printf("%d\n",ans);
}

//承认抄代码。。

【bzoj 2303】【Apio2011】方格染色的更多相关文章

  1. bzoj 2303: [Apio2011]方格染色

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

  2. BZOJ 2303: [Apio2011]方格染色 题解

    题目大意: 有n*m的方格,中间的数要么是1,要么是0,要求任意2*2的方格中的数异或和为1.已知一部分格子中的数,求合法的填数的方案数. 思路: 由题意得:a[i][j]^a[i][j+1]^a[i ...

  3. BZOJ 2303: [Apio2011]方格染色 [并查集 数学!]

    题意: $n*m:n,m \le 10^6$的网格,每个$2 \times 2$的方格必须有1个或3个涂成红色,其余涂成蓝色 有一些方格已经有颜色 求方案数 太神了!!!花我三节课 首先想了一下只有两 ...

  4. bzoj 2303: [Apio2011]方格染色【并查集】

    画图可知,每一行的状态转移到下一行只有两种:奇数列不变,偶数列^1:偶数列不变,奇数列^1 所以同一行相邻的变革染色格子要放到同一个并查集里,表示这个联通块里的列是联动的 最后统计下联通块数(不包括第 ...

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

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

  6. BZOJ_2303_[Apio2011]方格染色 _并查集

    BZOJ_2303_[Apio2011]方格染色 _并查集 Description Sam和他的妹妹Sara有一个包含n × m个方格的 表格.她们想要将其的每个方格都染成红色或蓝色. 出于个人喜好, ...

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

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

  8. 【题解】P3631 [APIO2011]方格染色

    很有意思的一道题,所以单独拿出来了. 完整分享看 这里 题目链接 luogu 题意 有一个包含 \(n \times m\) 个方格的表格.要将其中的每个方格都染成红色或蓝色.表格中每个 \(2 \t ...

  9. 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)& ...

  10. [APIO2011]方格染色

    题解: 挺不错的一道题目 首先4个里面只有1个1或者3个1 那么有一个特性就是4个数xor为1 为什么要用xor呢? 在于xor能把相同的数消去 然后用一般的套路 看看确定哪些值能确定全部 yy一下就 ...

随机推荐

  1. jquery 滚动事件

    $(window).scroll(function () { if ($(window).scrollTop() >50) {  alert('show!!'); }});

  2. 浅析跨域的方法之一 JSONP

    概念: 什么叫跨域? 同源策略:它是由Netscape提出的一个著名的安全策略.现在所有支持JavaScript 的浏览器都会使用这个策略. 所谓同源是指,域名,协议,端口相同. 同源的脚本才会被执行 ...

  3. 大数据技术生态圈形象比喻(Hadoop、Hive、Spark 关系)

    [摘要] 知乎上一篇很不错的科普文章,介绍大数据技术生态圈(Hadoop.Hive.Spark )的关系. 链接地址:https://www.zhihu.com/question/27974418 [ ...

  4. Magic Quadrant for Security Information and Event Management

    https://www.gartner.com/doc/reprints?id=1-4LC8PAW&ct=171130&st=sb Summary Security and risk ...

  5. ImageMagick 使用经验

    from:http://community.itbbs.cn/thread/20402/ 1.如何用ImageMagic水平或垂直拼接图片 因为是分片下载的,现在只能用montage拼接图片列阵,但如 ...

  6. 【python进阶】深入理解系统进程2

    前言 在上一篇[python进阶]深入理解系统进程1中,我们讲述了多任务的一些概念,多进程的创建,fork等一些问题,这一节我们继续接着讲述系统进程的一些方法及注意点 multiprocessing ...

  7. Windows远程桌面连接 出现身份错误 要求的函数不受支持

    原因 CVE-2018-0886 的 CredSSP 更新 将默认设置从"易受攻击"更改为"缓解"的更新. ## 官方更新 摘要 凭据安全支持提供程序协议 (C ...

  8. JS跨域:2.解决方案之-设置回调参数

    一 服务器端代码 package com.cn; import java.util.List; import javax.servlet.http.HttpServletRequest; import ...

  9. 使用清华源替代Ubuntu源

    sudo nano /etc/apt/source.list 替换为如下文本 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main ...

  10. css 选择器【转】

    最近在研究jQuery的选择器,大家知道jQuery的选择器和css的选择器非常相似,所以整理一下css选择器: css1-css3提供非常丰富的选择器,但是由于某些选择器被各个浏览器支持的情况不一样 ...