假设该矩形是aij,那么有a(i,j)=a(i-1,j-1)^a(i-1,j+1)^a(i-2,j),不断递归下去可以发现a(i,j)=a(1,y-x+1)^a(1,y-x+3)^……^a(1,x+y-1)。

那么,对第一行处理前缀和,Si=S(i-2)^a(1,i),即给出了两个数S的异或,只需将每一个点裂点为i和i’,然后若Si^Sj=0,并查集上连边(i,j)(i’,j’),否则连(i,j’)(i’,j),最后只需判断i和i’是否相连,相连即为0(这个可以理解为i表示i上是1,i’表示i上是0)。

最后,统计出有多少联通块,设有S个,则答案是$2^{(S-4)/2}$(如果没有约束,答案是$2^{n}=2^{2n+4-4)/2$)

 1 #include<bits/stdc++.h>
2 using namespace std;
3 int n,m,x,y,ans,f[200005];
4 char s[11];
5 int find(int k){
6 if (k==f[k])return k;
7 return f[k]=find(f[k]);
8 }
9 void add(int x,int y){
10 if (find(x)!=find(y))f[find(x)]=find(y);
11 }
12 int main(){
13 scanf("%d%d",&n,&m);
14 for(int i=1;i<=2*n+3;i++)f[i]=i;
15 for(int i=1;i<=m;i++){
16 scanf("%d%d%s",&x,&y,s);
17 x-=y;
18 y=min(x+2*y,2*n-x-2*y+2);
19 x=max(x,-x);
20 if (s[0]=='x'){
21 add(2*y,2*x);
22 add(2*y+1,2*x+1);
23 }
24 else{
25 add(2*y+1,2*x);
26 add(2*x+1,2*y);
27 }
28 }
29 for(int i=0;i<=n+1;i++)
30 if (find(2*i)==find(2*i+1)){
31 printf("0");
32 return 0;
33 }
34 int s=0;
35 for(int i=0;i<=2*n+3;i++)s+=(find(i)==i);
36 s=s/2-2;
37 ans=1;
38 for(int i=1;i<=s;i++)ans=ans*2%1000000007;
39 printf("%d",ans);
40 }

[cf461D]Appleman and Complicated Task的更多相关文章

  1. Codeforces 461D. Appleman and Complicated Task 构造,计数

    原文链接https://www.cnblogs.com/zhouzhendong/p/CF461D.html 题解 首先我们可以发现如果确定了第一行,那么方案就唯一了. 然后,我们来看看一个点的值确定 ...

  2. CodeForces462 A. Appleman and Easy Task

    A. Appleman and Easy Task time limit per test 1 second memory limit per test 256 megabytes input sta ...

  3. Codeforces 263A. Appleman and Easy Task

    A. Appleman and Easy Task time limit per test  1 second memory limit per test  256 megabytes input  ...

  4. Codesforces 467E Alex and Complicated Task

    E. Alex and Complicated Task time limit per test 2 seconds memory limit per test 256 megabytes input ...

  5. Codeforces Round #263 (Div. 2) A. Appleman and Easy Task【地图型搜索/判断一个点四周‘o’的个数的奇偶】

    A. Appleman and Easy Task time limit per test 1 second memory limit per test 256 megabytes input sta ...

  6. CF461D-Appleman and Complicated Task【并查集】

    正题 题目链接:https://www.luogu.com.cn/problem/CF461D 题目大意 \(n*n\)的网格需要填上\(x\)或\(o\),其中有\(k\)个格子已经固定,求有多少中 ...

  7. Codeforces Round #263

    http://codeforces.com/contest/461 A.水题 B.太挫了,竟然被hack了一发.... C.贪心..竟然没看出来时哈夫曼编码问题 D.题目大意:给一棵树,每一个点为白色 ...

  8. Unity3D游戏在iOS上因为trampolines闪退的原因与解决办法

    http://7dot9.com/?p=444 http://whydoidoit.com/2012/08/20/unity-serializer-mono-and-trampolines/ 确定具体 ...

  9. CF 518 D. Ilya and Escalator

    Ilya got tired of sports programming, left university and got a job in the subway. He was given the ...

随机推荐

  1. IPtable防火墙概念介绍

    1.iptables安全优化 1.不配外网,做代理转发或者防火墙映射 2.并发过大,不建议开启防火墙 2.防火墙的工作流程: 按照配置规则的顺序自上而下,从前到后进行过滤 如果匹配上新规则,表明是阻止 ...

  2. 从零入门 Serverless | SAE 的极致应用部署效率

    作者 | 文俊 阿里巴巴云原生团队 本文整理自<Serverless 技术公开课>,"Serverless"公众号后台回复"入门",即可获取系列文章 ...

  3. 关于SSTI的坑

    SSTI注入 进过几天的CSDN和博客园以及个人博客的查询,我大概讲一下我对SSTI模板注入的理解. SSTI注入指的是模板注入(应该翻译就是模板注入) 就站在我所了解的知识水平(大概就是大一随便水了 ...

  4. spark性能优化(一)

    本文内容说明 初始化配置给rdd和dataframe带来的影响 repartition的相关说明 cache&persist的相关说明 性能优化的说明建议以及实例 配置说明 spark:2.4 ...

  5. 超详细的Ribbon源码解析

    Ribbon简介 什么是Ribbon? Ribbon是springcloud下的客户端负载均衡器,消费者在通过服务别名调用服务时,需要通过Ribbon做负载均衡获取实际的服务调用地址,然后通过http ...

  6. 开源协同OA办公平台教程:O2OA服务管理中,接口的调用权限

    ​ 本文介绍O2OA服务管理中,接口的权限设定和调用方式. 适用版本:5.4及以上版本 创建接口 具有服务管理设计权限的用户(具有ServiceManager角色或Manager角色)打开" ...

  7. fastjson及其反序列化分析--TemplatesImpl

    fastjson及其反序列化分析 源码取自 https://www.github.com/ZH3FENG/PoCs-fastjson1241 参考 (23条消息) Json详解以及fastjson使用 ...

  8. HashMap、ConcurrentHashMap红黑树实现分析

    本文学习知识点 1.二叉查找树,以及二叉树查找带来的问题. 2.平衡二叉树及好处. 3.红黑树的定义及构造. 4.ConcurrentHashMap中红黑树的构造. 在正式分析红黑树之前,有必要了解红 ...

  9. javascript-jquery-文档处理

    一.移动元素 1.append():向每个匹配元素的内部追加内容.例如:$("选择器1").qppend("选择器2"):将会匹配选择器2的元素,移动到匹配选择 ...

  10. 天脉2(ACoreOS653)操作系统学习01

    天脉2(ACoreOS653)操作系统学习01 由于我的毕业设计涉及相关嵌入式操作系统,故最近学了学天脉2操作系统. 一.ARINC653标准 1.ARINC653标准是什么? ARINC 653 : ...