BZOJ3503:[CQOI2014]和谐矩阵(高斯消元,bitset)
Description
我们称一个由0和1组成的矩阵是和谐的,当且仅当每个元素都有偶数个相邻的1。一个元素相邻的元素包括它本
身,及他上下左右的4个元素(如果存在)。
给定矩阵的行数和列数,请计算并输出一个和谐的矩阵。注意:所有元素为0的矩阵是不允许的。
Input
输入一行,包含两个空格分隔的整数m和n,分别表示矩阵的行数和列数。
Output
输出包含m行,每行n个空格分隔整数(0或1),为所求矩阵。测试数据保证有解。
Sample Input
Sample Output
1 1 1 0
0 0 0 1
1 1 0 1
数据范围
1 <=m, n <=40
Solution
讲真这个题不知道比1770那个题低到哪里去了(其实差不多)
会做那个题一定会做这个【认真脸
很明显这个还是构造01矩阵然后解异或方程组
只不过这个构造出来的矩阵是n*m的,n^3显然很吃力
那么我们把1770代码里的异或用bitset来搞常数就小很多了
听说bitset随便虐1e9?
Code
#include<iostream>
#include<cstring>
#include<cstdio>
#include<bitset>
#define N (1600+100)
#define id(x,y) (x-1)*m+y
using namespace std; bitset<N>f[N];
int ans[N],n,m;
int dx[]={,,-,,,},dy[]={,,,,-,}; void Gauss(int n)
{
for (int i=; i<=n; ++i)
{
int num=i;
for (int j=i+; j<=n; ++j)
if (f[j][i]>f[num][i]) num=j;
if (num!=i) swap(f[i],f[num]); for (int j=i+; j<=n; ++j)
if (f[j][i]) f[j]^=f[i];//这里用bitset来搞常数好像很小
}
for (int i=n; i>=; --i)
{
if (!f[i][i]) ans[i]=;
else
{
for (int j=i+; j<=n; ++j)
f[i][n+]=f[i][n+]^(f[i][j]*ans[j]);
ans[i]=f[i][n+];
}
}
} int main()
{
scanf("%d%d",&n,&m);
for (int i=; i<=n; ++i)
for (int j=; j<=m; ++j)
for (int k=; k<=; ++k)
{
int x=i+dx[k],y=j+dy[k];
if (x> && x<=n && y> && y<=m)
f[id(i,j)][id(x,y)]=;
}
Gauss(n*m);
for (int i=; i<=n; ++i)
{
for (int j=; j<=m-; ++j)
printf("%d ",ans[id(i,j)]);
printf("%d\n",ans[id(i,m)]);
}
}
BZOJ3503:[CQOI2014]和谐矩阵(高斯消元,bitset)的更多相关文章
- P3164 [CQOI2014]和谐矩阵(高斯消元 + bitset)
题意:构造一个$n*m$矩阵 使得每个元素和上下左右的xor值=0 题解:设第一行的每个元素值为未知数 可以依次得到每一行的值 然后把最后一行由题意条件 得到$m$个方程 高斯消元解一下 bitset ...
- BZOJ 3503: [Cqoi2014]和谐矩阵( 高斯消元 )
偶数个相邻, 以n*m个点为变量, 建立异或方程组然后高斯消元... O((n*m)^3)复杂度看起来好像有点大...但是压一下位的话就是O((n*m)^3 / 64), 常数小, 实际也跑得很快. ...
- [SDOI2010]外星千足虫 题解 高斯消元+bitset简介
高斯消元 + bitset 简介: 高斯消元其实就是以加减消元为核心求唯一解.这道题还是比较裸的,可以快速判断出来.我们将每一只虫子看作一个未知数,这样根据它给出的 m 组方程我们可以高斯消元得出每一 ...
- 【高斯消元】BZOJ3503 [Cqoi2014]和谐矩阵
3503: [Cqoi2014]和谐矩阵 Time Limit: 10 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 1197 Solved: ...
- bzoj千题计划105:bzoj3503: [Cqoi2014]和谐矩阵(高斯消元法解异或方程组)
http://www.lydsy.com/JudgeOnline/problem.php?id=3503 b[i][j] 表示i对j是否有影响 高斯消元解异或方程组 bitset优化 #include ...
- bzoj 1923 [Sdoi2010]外星千足虫(高斯消元+bitset)
1923: [Sdoi2010]外星千足虫 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 634 Solved: 397[Submit][Status ...
- BZOJ_1923_[Sdoi2010]外星千足虫_高斯消元+bitset
BZOJ_1923_[Sdoi2010]外星千足虫_高斯消元 Description Input 第一行是两个正整数 N, M. 接下来 M行,按顺序给出 Charles 这M次使用“点足机”的统计结 ...
- 矩阵&&高斯消元
矩阵运算: \(A\times B\)叫做\(A\)左乘\(B\),或者\(B\)右乘\(A\). 行列式性质: \(1.\)交换矩阵的两行(列),行列式取相反数. \(2.\)某一行元素都\(\ti ...
- POJ 1830 开关问题 【01矩阵 高斯消元】
任意门:http://poj.org/problem?id=1830 开关问题 Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 1 ...
随机推荐
- java服务器访问其他服务器工具类编写
java服务器访问其他服务器工具类编写适合各种消息推送及微服务交互 package com.xiruo.medbid.components; import com.xiruo.medbid.util. ...
- hihocoder #1529 : 不上升序列
Description 给定一个长度为 n 的非负整数序列 a[1..n]. 你每次可以花费 1 的代价给某个 a[i] 加1或者减1. 求最少需要多少代价能将这个序列变成一个不上升序列. Solut ...
- wcf datetime json format
wcf 内置的json序列化工具,有时需要替换,或者特殊情况的处理,需要修改. 我也遇到了Dto属性类型是datetime,json的反序列化 和 序列号不友好. 这是国外网站的一个方案:Replac ...
- Expression Blend实例中文教程(7) - 动画基础快速入门Animation
通过前面文章学习,已经对Blend的开发界面,以及控件有了初步的认识.本文将讲述Blend的一个核心功能,动画设计.大家也许注意到,从开篇到现在,所有的文章都是属于快速入门,是因为这些文章,都是我曾经 ...
- Java SortedSet为什么可以实现自动排序?
Set中的SortedSet(SortedSet为TreeSet的实现接口),它们之间的继承关系如下: java.util.Set; java.util.SortedSet; java.util.Tr ...
- Java-----思想认识
1.1 Java封装性思想的初步理解 从项目需求的角度出发,建立各个模块化的类,各个模块暂时不需要具体的方法描述,只需要各个模块的理想到位. 以银行项目为例.初步设想需要三个模块:银行(Bank类). ...
- JUC总览,来自汪文君整理
- sqlserver查询表字段描述(转)
原文地址:https://blog.csdn.net/changhong009/article/details/29587063 --快速查看表结构(比较全面的) SELECT CASE WHEN c ...
- 读ios开发有感——建立APP开发体系
前言:ios开发和现在的大前端.跨端开发在底层上的道理是相通的,因此通过学习ios开发,可以形成对APP开发体系的理解. 一.app开发的知识体系 基础 应用开发 原理 原生与前端 二.基础模块 按照 ...
- 洛谷P3960 列队(动态开节点线段树)
题意 题目链接 Sol 看不懂splay..,看不懂树状数组... 只会暴力动态开节点线段树 观察之后不难发现,我们对于行和列需要支持的操作都是相同的:找到第\(k\)大的元素并删除,在末尾插入一个元 ...