解题:CQOI 2013 和谐矩阵
踩踩时间复杂度不正确的高斯消元
首先可以发现第一行确定后就可以确定整个矩阵,所以可以枚举第一行的所有状态然后$O(n)$递推检查是否合法
$O(n)$递推的方法是这样的:设$pre$为上一行,$now$为当前行,$nxt$为递推出的下一行,$all$为列的全集,则可以直接用位运算完成递推:
$nxt=all\&((now<<1)xor(now>>1)xor$ $now$ $xor$ $pre)$
递推后第$n+1$行为空则说明可行
问题来了,第一行的状态有$O(2^{40})$种,会$T$。但是有一个鬼畜的性质是如果存在合法解一定有一个对称的合法解,然后就可以$O(n*2^{\frac{n}{2}})$出解了=。=
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=;
int mapp[N][N];
long long n,m,mid,all,half;
long long fir,las,noww,tmp;
int check(int a,int b)
{
return mapp[a][b]^mapp[a-][b]^mapp[a][b-]^mapp[a][b+];
}
int main ()
{
scanf("%lld%lld",&n,&m);
mid=(m+)/,all=(1ll<<m)-,half=(1ll<<mid)-;
for(int i=;i<=half;i++)
{
fir=;
for(int j=;j<=mid;j++)
if(i&(1ll<<(j-))) fir|=(1ll<<(j-))|(1ll<<(m-j));
las=noww=all&(fir^(fir<<)^(fir>>)),tmp=fir;
for(int j=;j<=n;j++)
las=noww,noww=all&(noww^(noww<<)^(noww>>)^tmp),tmp=las;
if(!noww) break;
}
for(int i=;i<=m;i++)
mapp[][i]=(fir&(1ll<<(i-)))?:;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
mapp[i][j]=check(i-,j);
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
printf("%d ",mapp[i][j]);
printf("\n");
}
return ;
}
解题:CQOI 2013 和谐矩阵的更多相关文章
- [BZOJ 3503][Cqoi 2014]和谐矩阵
我觉得这一题的样例输出一点都不和谐,大家千万别像我一样被坑了…… 题目不算难,果然是进错省系列555,不过搞出 O(n*m*2m) 的还是不要挣扎的比较好 我们暴力地推出第 n 行 第 m 列中每个数 ...
- BZOJ 3503: [Cqoi2014]和谐矩阵( 高斯消元 )
偶数个相邻, 以n*m个点为变量, 建立异或方程组然后高斯消元... O((n*m)^3)复杂度看起来好像有点大...但是压一下位的话就是O((n*m)^3 / 64), 常数小, 实际也跑得很快. ...
- 【高斯消元】BZOJ3503 [Cqoi2014]和谐矩阵
3503: [Cqoi2014]和谐矩阵 Time Limit: 10 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 1197 Solved: ...
- BZOJ_3503_[Cqoi2014]和谐矩阵_高斯消元
BZOJ_3503_[Cqoi2014]和谐矩阵_高斯消元 题意: 我们称一个由0和1组成的矩阵是和谐的,当且仅当每个元素都有偶数个相邻的1.一个元素相邻的元素包括它本身,及他上下左右的4个元素(如果 ...
- bzoj千题计划105:bzoj3503: [Cqoi2014]和谐矩阵(高斯消元法解异或方程组)
http://www.lydsy.com/JudgeOnline/problem.php?id=3503 b[i][j] 表示i对j是否有影响 高斯消元解异或方程组 bitset优化 #include ...
- 3503: [Cqoi2014]和谐矩阵
3503: [Cqoi2014]和谐矩阵 链接 分析: 对于每个点,可以列出一个方程a[i][j]=a[i][j-1]^a[i][j+1]^a[i-1][j]^a[i+1][j],于是可以列出n*m个 ...
- P3164 [CQOI2014]和谐矩阵
P3164 [CQOI2014]和谐矩阵 乱写能AC,暴力踩标程(雾 第一眼 诶这题能暴力枚举2333!!! 第二眼 诶这题能高斯消元!那只需要把每个位置的数给设出来就能够列方程了!然后就可以\(O( ...
- 【BZOJ】【3503】【CQOI2014】和谐矩阵
高斯消元解Xor方程组 Orz ZYF o(︶︿︶)o 唉我的数学太烂了…… 错误思路:对每个格点进行标号,然后根据某5个异或和为0列方程组,高斯消元找自由元……(目测N^3会TLE) ZYF的正确思 ...
- bzoj3503 和谐矩阵
Description 我们称一个由0和1组成的矩阵是和谐的,当且仅当每个元素都有偶数个相邻的1.一个元素相邻的元素包括它本身,及他上下左右的4个元素(如果存在).给定矩阵的行数和列数,请计算并输出一 ...
随机推荐
- Mysql报错型注入总结
Mysql注入虽然是老生常谈的问题,但是工作中更多的是使用sqlmap等工具进行注入测试的,原理方面还是不是很清楚,所以这段时间主要是自己搭建环境在学手工注入,简单的将自己的学习做一个总结和记录.在常 ...
- visudo命令详解
基础命令学习目录首页 原文链接:https://www.cnblogs.com/ImJerryChan/p/6667819.html 目录前言一.介绍二.配置文件简介三.实战配置 前言: su ...
- fiddler常识汇总
Fiddler 抓包工具总结 名称 含义 # 抓取HTTP Request的顺序,从1开始,以此递增 Result HTTP状态码 Protocol 请求使用的协议,如HTTP/HTTPS/FTP ...
- css修改input自动提示的黄色背景
css修改input自动提示的黄色背景 input:-webkit-autofill { background-color: #FAFFBD; background-image: none; -web ...
- 图解Raid5数据存储的原理
- 第二阶段每日站立会议Third Day
昨天对图片显示的大小进行调整 今天对于程序中的字体显示进行细化修改,使界面更美观 遇到的问题:当图片太小时,显示一块灰色区域,不美观
- 【动态规划】POJ-2229
一.题目 Description Farmer John commanded his cows to search for different sets of numbers that sum to ...
- ACM的fflush(stdin)的问题
在最近的刷题过程中,因为用到了很多字符串的操作,有时需要多次清空缓冲区,所以用了fflush(stdin);的语句,确实很好用,但是发现在OJ上提交后会出现runtime error的问题.当时并没有 ...
- c3p0连接池基本配置mysql和oracle
c3p0-config.xml <?xml version="1.0" encoding="UTF-8"?> <c3p0-config> ...
- Hibernate性能优化之SessionFactory重用
Hibernate优化的方式有很多,如缓存.延迟加载以及与SQL合理映射,通过对SessionFactory使用的优化是最基础的. SessionFactory负责创建Session实例,Sessio ...