题意:构造一个$n*m$矩阵 使得每个元素和上下左右的xor值=0

题解:设第一行的每个元素值为未知数 可以依次得到每一行的值

   然后把最后一行由题意条件 得到$m$个方程 高斯消元解一下 bitset写起来比较方便

  1. #include <stdio.h>
  2. #include <iostream>
  3. #include <algorithm>
  4. #include <bitset>
  5. using namespace std;
  6. const int MAXN = 45;
  7.  
  8. int n, m;
  9. bitset<MAXN> a[MAXN][MAXN];
  10. bitset<MAXN> b[MAXN];
  11. int ans[MAXN];
  12.  
  13. int dx[] = {-1, -1, -1, -2};
  14. int dy[] = {-1, 0, 1, 0};
  15.  
  16. bool check(int x, int y) {
  17. if(x >= 1 && x <= n && y >= 1 && y <= m) return true;
  18. return false;
  19. }
  20.  
  21. void gauss() {
  22. for(int i = 1, now = 1; i <= m && now <= m; now++) {
  23. for(int j = i; j <= m; j++) {
  24. if(b[j][now]) {
  25. std::swap(b[j], b[i]);
  26. break;
  27. }
  28. }
  29. if(!b[i][now]) ans[now] = 1;
  30. for(int j = i + 1; j <= m; j++) {
  31. if(b[j][now]) {
  32. b[j] ^= b[i];
  33. }
  34. }
  35. i++;
  36. }
  37.  
  38. for(int i = m; i >= 1; i--) {
  39. for(int j = i + 1; j <= m; j++) {
  40. if(b[i][j]) {
  41. ans[i] ^= ans[j];
  42. }
  43. }
  44. }
  45. }
  46.  
  47. int main() {
  48. scanf("%d%d", &n, &m);
  49.  
  50. for(int i = 1; i <= m; i++) a[1][i][i] = 1;
  51. for(int i = 2; i <= n; i++)
  52. for(int j = 1; j <= m; j++) {
  53. for(int k = 0; k < 4; k++) {
  54. int nx = i + dx[k];
  55. int ny = j + dy[k];
  56. if(check(nx, ny)) {
  57. a[i][j] ^= a[nx][ny];
  58. }
  59. }
  60. }
  61.  
  62. for(int i = 1; i <= m; i++) {
  63. b[i] = a[n][i];
  64. if(n - 1 >= 1) b[i] ^= a[n - 1][i];
  65. if(i - 1 >= 1) b[i] ^= a[n][i - 1];
  66. if(i + 1 <= m) b[i] ^= a[n][i + 1];
  67. }
  68. gauss();
  69.  
  70. for(int i = 1; i <= n; i++) {
  71. for(int j = 1; j <= m; j++) {
  72. int res = 0;
  73. for(int t = 1; t <= m; t++) {
  74. if(a[i][j][t]) res ^= ans[t];
  75. }
  76. if(j != m) printf("%d ", res);
  77. else printf("%d\n", res);
  78. }
  79. }
  80. return 0;
  81. }

P3164 [CQOI2014]和谐矩阵(高斯消元 + bitset)的更多相关文章

  1. BZOJ3503:[CQOI2014]和谐矩阵(高斯消元,bitset)

    Description 我们称一个由0和1组成的矩阵是和谐的,当且仅当每个元素都有偶数个相邻的1.一个元素相邻的元素包括它本 身,及他上下左右的4个元素(如果存在). 给定矩阵的行数和列数,请计算并输 ...

  2. BZOJ 3503: [Cqoi2014]和谐矩阵( 高斯消元 )

    偶数个相邻, 以n*m个点为变量, 建立异或方程组然后高斯消元... O((n*m)^3)复杂度看起来好像有点大...但是压一下位的话就是O((n*m)^3 / 64), 常数小, 实际也跑得很快. ...

  3. P3164 [CQOI2014]和谐矩阵

    P3164 [CQOI2014]和谐矩阵 乱写能AC,暴力踩标程(雾 第一眼 诶这题能暴力枚举2333!!! 第二眼 诶这题能高斯消元!那只需要把每个位置的数给设出来就能够列方程了!然后就可以\(O( ...

  4. [SDOI2010]外星千足虫 题解 高斯消元+bitset简介

    高斯消元 + bitset 简介: 高斯消元其实就是以加减消元为核心求唯一解.这道题还是比较裸的,可以快速判断出来.我们将每一只虫子看作一个未知数,这样根据它给出的 m 组方程我们可以高斯消元得出每一 ...

  5. bzoj 1923 [Sdoi2010]外星千足虫(高斯消元+bitset)

    1923: [Sdoi2010]外星千足虫 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 634  Solved: 397[Submit][Status ...

  6. BZOJ_1923_[Sdoi2010]外星千足虫_高斯消元+bitset

    BZOJ_1923_[Sdoi2010]外星千足虫_高斯消元 Description Input 第一行是两个正整数 N, M. 接下来 M行,按顺序给出 Charles 这M次使用“点足机”的统计结 ...

  7. 矩阵&&高斯消元

    矩阵运算: \(A\times B\)叫做\(A\)左乘\(B\),或者\(B\)右乘\(A\). 行列式性质: \(1.\)交换矩阵的两行(列),行列式取相反数. \(2.\)某一行元素都\(\ti ...

  8. POJ 1830 开关问题 【01矩阵 高斯消元】

    任意门:http://poj.org/problem?id=1830 开关问题 Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 1 ...

  9. 【Luogu】P3389高斯消元模板(矩阵高斯消元)

    题目链接 高斯消元其实是个大模拟qwq 所以就着代码食用 首先我们读入 ;i<=n;++i) ;j<=n+;++j) scanf("%lf",&s[i][j]) ...

随机推荐

  1. Label_img&a

    绝对路径 相对路径 从根目录开始写 从引用的文件所在目录开始写 也可以作为链接提示 target = _blank 新窗口打开 = _self 默认值 本窗口打开 = _new 新窗口打开 = _pa ...

  2. 用python+sklearn(机器学习)实现天气预报数据 数据

    用python+sklearn机器学习实现天气预报 数据 项目地址 系列教程 勘误表 0.前言 1.爬虫 a.确认要被爬取的网页网址 b.爬虫部分 c.网页内容匹配取出部分 d.写入csv文件格式化 ...

  3. 【项目实践】一文带你搞定Session和JWT的登录认证方式

    以项目驱动学习,以实践检验真知 前言 登录认证,估计是所有系统中最常见的功能了,并且也是最基础.最重要的功能.为了做好这一块而诞生了许多安全框架,比如最常见的Shiro.Spring Security ...

  4. ORA-39700: database must be opened with UPGRADE option【转】

    1. 错误 数据库升级后(从11.2.0.1升级到11.2.0.4)启动报错 SQL> startup ORACLE instance started.   Total System Globa ...

  5. Viser报错:dodge is not support linear attribute, please use category attribute!

    遇到这样的问题是因为x轴数据不能为为连续性的日期(日期格式为:YYYY-MM-DD),需要设置为分类属性(cat),有一些可能设置为timeCat,看具体情况 scale 参数支持以下类型 • ide ...

  6. TCP连接的建立与释放(超详细)

    前言:在计算机网络协议中,TCP只是其中一个,然而在网络使用中,TCP也是最离不开的协议之一,它的重要性毋庸置疑,最最重要的是,面试的重点就是它啊,呜呜~~,今天我们一起来看下TCP的连接建立与释放, ...

  7. 【Java基础】Java8 新特性

    Java8 新特性 Lambda 表达式 Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递).使用它可以写出更简洁.更灵活的代码. L ...

  8. Java开发手册之数据库规约

    1.不要使用 count(列名)或 count(常量)来替代 count(*),count(*)是 SQL92 定义的标准统计行数的语法,跟数据库无关,跟 NULL 和非 NULL 无关. 2.cou ...

  9. 推荐几个学习Python的免费网站

    想要学好Python,只靠看Python相关的书籍是远远不够的!今天为大家分享几个实用的Python学习网站. 欢迎各位热爱Python的小伙伴进群交流:610380249群里有大佬哦,而且很热心,群 ...

  10. spring data JPA 使用EntityentiListeners实现数据审计功能设计

    当系统中有审计需求时,特别是需要对某些数据进行动态监控时,我们可以使用EntityentiListeners来实现,当然这是基于使用JPA而不是mybatis的情况下. 当前我们的需求场景: 1.需要 ...