洛谷P3164 [CQOI2014]和谐矩阵】的更多相关文章

高斯消元,可以直接消的 #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> #define MAXN 45*45 #define For(i,x,y) for(register int i=x;i<=y;i++) using namespace std; int X,Y; int a[MAXN][MAXN]; )*Y+y;} ]={,-,,,}; void i…
P3164 [CQOI2014]和谐矩阵 乱写能AC,暴力踩标程(雾 第一眼 诶这题能暴力枚举2333!!! 第二眼 诶这题能高斯消元!那只需要把每个位置的数给设出来就能够列方程了!然后就可以\(O(1600^3)\)跑了! 第三眼 只需要对每一行每一列有奇数还是偶数个1列方程就行了! 然而我太菜了想不到这种方法 第三眼 这个方程好像系数都是0而且结果都是1!那么消的时候只需要下面方程减上面方程就行了!而且这是个模2意义下的方程! emmm所以不需要减只需要异或? 所以可以用bitset存系数?…
题意:构造一个$n*m$矩阵 使得每个元素和上下左右的xor值=0 题解:设第一行的每个元素值为未知数 可以依次得到每一行的值 然后把最后一行由题意条件 得到$m$个方程 高斯消元解一下 bitset写起来比较方便 #include <stdio.h> #include <iostream> #include <algorithm> #include <bitset> using namespace std; const int MAXN = 45; int…
偶数个相邻, 以n*m个点为变量, 建立异或方程组然后高斯消元... O((n*m)^3)复杂度看起来好像有点大...但是压一下位的话就是O((n*m)^3 / 64), 常数小, 实际也跑得很快. ------------------------------------------------------------------------------------- #include<cstdio> #include<bitset> #include<cstring>…
3503: [Cqoi2014]和谐矩阵 Time Limit: 10 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 1197  Solved: 570[Submit][Status][Discuss] Description 我们称一个由0和1组成的矩阵是和谐的,当且仅当每个元素都有偶数个相邻的1.一个元素相邻的元素包括它本 身,及他上下左右的4个元素(如果存在). 给定矩阵的行数和列数,请计算并输出一个和谐的矩阵.注意:所有元素为0的矩…
BZOJ_3503_[Cqoi2014]和谐矩阵_高斯消元 题意: 我们称一个由0和1组成的矩阵是和谐的,当且仅当每个元素都有偶数个相邻的1.一个元素相邻的元素包括它本身,及他上下左右的4个元素(如果存在).给定矩阵的行数和列数,请计算并输出一个和谐的矩阵.注意:所有元素为0的矩阵是不允许的. 分析: 设n*m个未知数,列n*m个方程 高斯消元解方程,注意全零矩阵不合法 那我们如果发现有自由元就将它们置为1就好了 代码: #include <stdio.h> #include <stri…
http://www.lydsy.com/JudgeOnline/problem.php?id=3503 b[i][j] 表示i对j是否有影响 高斯消元解异或方程组 bitset优化 #include<cstdio> #include<bitset> using namespace std; bitset<>b[]; ]={,-,,,}; ]={,,,,-}; ]; int turn(int i,int j) { )*m+j-; } void gauss() { int…
3503: [Cqoi2014]和谐矩阵 链接 分析: 对于每个点,可以列出一个方程a[i][j]=a[i][j-1]^a[i][j+1]^a[i-1][j]^a[i+1][j],于是可以列出n*m个方程,高斯消元,复杂度$O(n^3m^3)$.可以再bitset优化一下. 还有一种复杂度更优的做法:如果知道了第一行,那么整个矩阵都可以推出来了,即每个点可以有第一行的几个位置异或得到. 所以可以推出每一行每个点,与第一行的那些点有关系,推得时候转化以下上面的式子,使得每一个点只与上面的行有关系.…
洛谷题目链接:[国家集训队]矩阵乘法 题目背景 原 <补丁VS错误>请前往P2761 题目描述 给你一个N*N的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第K小数. 输入输出格式 输入格式: 第一行两个数N,Q,表示矩阵大小和询问组数: 接下来N行N列一共N*N个数,表示这个矩阵: 再接下来Q行每行5个数描述一个询问:x1,y1,x2,y2,k表示找到以(x1,y1)为左上角.以(x2,y2)为右下角的子矩形中的第K小数. 输出格式: 对于每组询问输出第K小的数. 输入输出样例 输入样例#…
洛谷P3166:https://www.luogu.org/problemnew/show/P3166 思路 用组合数求出所有的3个点组合(包含不合法的) 把横竖的3个点共线的去掉 把斜的3个点共线的去掉(枚举所有的矩阵把每个矩阵的对角线去掉) 每一条对角线可以取得首尾两点有(n-i)*(m-j)*2种方式可以选择 每一条对角线除了首尾两个点之外可以取到中间点有gcd(i,j)-1个 因此有对于每个条对角线有gcd(i,j)-1种要去掉(相似三角形) 代码 #include<iostream>…