暴力直接解异或方程组,O(n^6)无法接受,那么我们考虑把格子分块,横着和竖着分别分为互不影响的块,这样因为障碍物最多不超过200个,那么块的个数最多为2*(800+200)=2000个,最后用bitset优化即可。

 #include <bits/stdc++.h>

 using namespace std;

 int n,cnt,Pos[],Right[],Left[];
int Crs[][],Dwn[][],MID;
char str[][]; bitset<>eq[]; void Gauss()
{
int i,j;
for(i=;i<=cnt;++i)
{
j=i;
while(!eq[j][i] && j<=cnt)j++;
if(j==cnt+)continue;
if(j!=i)swap(eq[j],eq[i]);
for(j=;j<=cnt;++j)
if(j!=i && eq[j][i])eq[j]^=eq[i];
}
return ;
} int main()
{
int i,j,temp; scanf("%d",&n); for(i=;i<=n;++i)
scanf("%s",str[i]+); for(i=;i<=n;++i)
str[][i]=str[i][]=str[i][n+]=str[n+][i]='X'; cnt=; for(j=;j<=n;++j) for(i=;i<=n+;++i)
{
if(str[i][j]!='X')Crs[i][j]=cnt;
if(str[i-][j]=='X' && str[i][j]!='X')Left[cnt]=i,Pos[cnt]=j;
if(str[i+][j]=='X' && str[i][j]!='X')Right[cnt]=i,cnt++;
} MID=cnt-; for(i=;i<=n;++i) for(j=;j<=n+;++j)
{
if(str[i][j]!='X')Dwn[i][j]=cnt;
if(str[i][j-]=='X' && str[i][j]!='X')Left[cnt]=j,Pos[cnt]=i;
if(str[i][j+]=='X' && str[i][j]!='X')Right[cnt]=j,cnt++;
} cnt--; for(i=;i<=MID;++i)
{
temp=;
eq[i].set(i); for(j=Left[i];j<=Right[i];++j)
{
eq[i][Crs[j][Pos[i]]]=eq[i][Crs[j][Pos[i]]]^;
eq[i][Dwn[j][Pos[i]]]=eq[i][Dwn[j][Pos[i]]]^;
temp^=(str[j][Pos[i]]=='X'?:str[j][Pos[i]]-);
temp^=;
} eq[i][cnt+]=temp;
#ifdef Debug
cerr << eq[i] << endl;
#endif
} for(i=MID+;i<=cnt;++i)
{
temp=;
eq[i].set(i); for(j=Left[i];j<=Right[i];++j)
{
eq[i][Crs[Pos[i]][j]]=eq[i][Crs[Pos[i]][j]]^;
eq[i][Dwn[Pos[i]][j]]=eq[i][Dwn[Pos[i]][j]]^;
temp^=(str[Pos[i]][j]=='X'?:str[Pos[i]][j]-);
temp^=;
} eq[i][cnt+]=temp;
#ifdef Debug
cerr << eq[i] << endl;
#endif
} Gauss(); #ifdef Debug
cerr << endl;
for(i=;i<=cnt;++i)
cerr << eq[i] << endl;
cerr << endl;
#endif for(i=;i<=n;++i)
{
for(j=;j<=n;++j)
{
printf("%d",str[i][j]=='X'?:(^eq[Crs[i][j]][cnt+]^eq[Dwn[i][j]][cnt+]
^(str[i][j]-)));
}
printf("\n");
} return ;
}

[TS-A1488][2013中国国家集训队第二次作业]魔法波[高斯消元]的更多相关文章

  1. [tsA1491][2013中国国家集训队第二次作业]家族[并查集]

    m方枚举,并查集O(1)维护,傻逼题,,被自己吓死搞成神题了... #include <bits/stdc++.h> using namespace std; struct tri { i ...

  2. [tsA1490][2013中国国家集训队第二次作业]osu![概率dp+线段树+矩阵乘法]

    这样的题解只能舔题解了,,,qaq 清橙资料里有.. #include <iostream> #include <cstdio> #include <cstdlib> ...

  3. [TS-A1489][2013中国国家集训队第二次作业]抽奖[概率dp]

    概率dp第一题,开始根本没搞懂,后来看了09年汤可因论文才基本搞懂,关键就是递推的时候做差比较一下,考虑新加入的情况对期望值的贡献,然后推推公式(好像还是不太会推qaq...) #include &l ...

  4. [TS-A1487][2013中国国家集训队第二次作业]分配游戏[二分]

    根据题意,设$3n$次比较中胜了$w$次,负了$l$次,平了$d$次,所有场次中胜了$W$次,负了$L$次,平了$D$次.如果一场赢了,那么$w-l$就会$+1$,相同地,$W-L$也会$+1$:如果 ...

  5. [TS-A1486][2013中国国家集训队第二次作业]树[树的重心,点分治]

    首先考虑暴力,可以枚举每两个点求lca进行计算,复杂度O(n^3logn),再考虑如果枚举每个点作为lca去枚举这个点的子树中的点复杂度会大幅下降,如果我们将每个点递归考虑,每次计算过这个点就把这个点 ...

  6. [TS-A1505] [清橙2013中国国家集训队第二次作业] 树 [可持久化线段树,求树上路径第k大]

    按Dfs序逐个插入点,建立可持久化线段树,每次查询即可,具体详见代码. 不知道为什么,代码慢的要死,, #include <iostream> #include <algorithm ...

  7. < < < 2013年国家集训队作业 > > >

    完成题数/总题数:  道/37道 1.  A1504. Book(王迪): 数论+贪心   ★★☆        2013中国国家集训队第二次作业 2.  A1505. 树(张闻涛): 倍增LCA+可 ...

  8. [转] ACM中国国家集训队论文集目录(1999-2009)

    国家集训队1999论文集 陈宏:<数据结构的选择与算法效率——从IOI98试题PICTURE谈起>来煜坤:<把握本质,灵活运用——动态规划的深入探讨>齐鑫:<搜索方法中的 ...

  9. 2017年中国大学生程序设计竞赛-中南地区赛暨第八届湘潭市大学生计算机程序设计大赛题解&源码(A.高斯消元,D,模拟,E,前缀和,F,LCS,H,Prim算法,I,胡搞,J,树状数组)

    A------------------------------------------------------------------------------------ 题目链接:http://20 ...

随机推荐

  1. Filter,Interceptor和Aspect

    过滤器使用的主要是反射 :拦截器使用的主要是回调 :AOP使用的主要是动态代理. 一个请求过来 ,先进行过滤器处理,看程序是否受理该请求.过滤器放过后, 程序中的拦截器进行处理,处理完后进入被AOP动 ...

  2. E20171011-hm

    Rendering engine  渲染引擎; 引擎; 绘图引擎; interactive   adj. 互动的; 互相作用的,相互影响的; [计] 交互式的; defer   vt. 使推迟; 使延 ...

  3. myeclipse配背景色

    1:使jsp,html等页面为纯黑色. 2:发现JS的背景颜色还是默认的.而且还是块状的.将它设置背景为黑色的. *效果图: 参考:http://blog.csdn.net/ltqwby/articl ...

  4. Codeforces Round #239 (Div. 1)

    B. Long Path time limit per test 1 second memory limit per test 256 megabytes input standard input o ...

  5. Appium + python - weixin公众号操作

    from appium import webdriverfrom time import sleep desired_caps = { "platformName":"A ...

  6. akka设计模式系列-While模式

    While模式严格来说是while循环在Akka中的合理实现.while是开发过程中经常用到的语句之一,也是绝大部分编程语言都支持的语法.但while语句是一个循环,如果循环条件没有达到会一直执行wh ...

  7. 根据JSON创建对应的HIVE表

    本文提供一种用SCALA把JSON串转换为HIVE表的方法,由于比较简单,只贴代码,不做解释.有问题可以留言探讨 package com.gabry.hiveimport org.json4s._im ...

  8. 题解报告:hdu 1233 还是畅通工程

    Problem Description 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能 ...

  9. Web开发中跨域的几种解决方案

    同domain(或ip),同端口,同协议视为同一个域,一个域内的脚本仅仅具有本域内的权限,可以理解为本域脚本只能读写本域内的资源,而无法访问其它域的资源.这种安全限制称为同源策略. 出于安全考虑,HT ...

  10. React Native常用组件在Android和IOS上的不同

    React Native常用组件在Android和IOS上的不同 一.Text组件在两个平台上的不同表现 1.1 height与fontSize 1.1.1只指定font,不指定height 在这种情 ...