洛谷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];
int c(int x,int y){return (x-)*Y+y;}
int d[]={,-,,,};
void init(){
scanf("%d%d",&X,&Y);
int x,y;
For(i,,X){
For(j,,Y){
a[c(i,j)][c(i,j)]=;
For(k,,){
x=i+d[k],y=j+d[k+];
if(<=x&&x<=X&&<=y&&y<=Y){
a[c(i,j)][c(x,y)]=;
}
}
a[c(i,j)][c(X,Y)+]=;
}
}
}
int ans[][];
void guass(int m,int n){
int line=;
For(k,,m){
int i=line;
while(i<=m&&!a[i][k])i++;
if(i>m){
for(i=;i<line;i++){
if(a[i][k])a[i][n]^=,a[i][k]=;
}
continue;
}
if(i!=line)swap(a[i],a[line]);
for(i=;i<=m;i++){
if(i==line)continue;
if(a[i][k]){
For(j,k,n){
a[i][j]^=a[line][j];
}
}
}
line++;
}
line=;
For(i,,X){
For(j,,Y){
if(a[line][c(i,j)]){
ans[i][j]=a[line][n];
line++;
}
else{
ans[i][j]=;
}
}
}
}
void solve(){
guass(c(X,Y),c(X,Y)+);
For(i,,X){
For(j,,Y-){
printf("%d ",ans[i][j]);
}
printf("%d\n",ans[i][Y]);
}
}
int main()
{
// freopen("data.in","r",stdin);
init();
solve();
return ;
}
注意到第一行会决定第二行,第二行会决定第三行,然后处理最后一行,让它符合即可,这样方程数目少了一个平方
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#define MAXN 45
#define For(i,x,y) for(register int i=x;i<=y;i++)
#define ll long long
using namespace std;
int X,Y;
ll t[MAXN][MAXN];
int a[MAXN<<][MAXN];
int ans[MAXN][MAXN];
void guass(int n,int m){
int line=;
For(k,,n){
int i=line;
while(i<=n&&!a[i][k])i++;
if(i>n){
for(i=line-;i>=;i--){
if(a[i][k])a[i][m]^=,a[i][k]=;
}
continue;
}
if(i!=line)swap(a[i],a[line]);
for(i=;i<=n;i++){
if(i==line)continue;
if(a[i][k]){
For(j,k,m){
a[i][j]^=a[line][j];
}
}
}
line++;
}
line=;
For(k,,n){
if(a[line][k]){
ans[][k]=a[line][m];
line++;
}
else{
ans[][k]=;
}
}
}
void init(){
scanf("%d%d",&X,&Y);
For(i,,Y)t[][i]=(1LL<<(i-));
For(i,,X+){
For(j,,Y){
t[i][j]=t[i-][j-]^t[i-][j]^t[i-][j+]^t[i-][j];
}
}
ll p;int k;
For(j,,Y){
for(p=t[X+][j],k=;p;p>>=,k++){
if(p&){
a[j][k]=;
}
}
}
}
void solve(){
guass(Y,Y+);
// for(int i=1;i<=Y;i++){
// for(int j=1;j<=Y+1;j++){
// printf("%d ",a[i][j]);
// }
// printf("\n");
// }
For(i,,X){
For(j,,Y){
ans[i][j]=ans[i-][j-]^ans[i-][j]^ans[i-][j+]^ans[i-][j];
}
}
For(i,,X){
For(j,,Y-){
printf("%d ",ans[i][j]);
}
printf("%d\n",ans[i][Y]);
}
}
int main()
{
// freopen("data.in","r",stdin);
init();
solve();
return ;
}
洛谷P3164 [CQOI2014]和谐矩阵的更多相关文章
- P3164 [CQOI2014]和谐矩阵
P3164 [CQOI2014]和谐矩阵 乱写能AC,暴力踩标程(雾 第一眼 诶这题能暴力枚举2333!!! 第二眼 诶这题能高斯消元!那只需要把每个位置的数给设出来就能够列方程了!然后就可以\(O( ...
- P3164 [CQOI2014]和谐矩阵(高斯消元 + bitset)
题意:构造一个$n*m$矩阵 使得每个元素和上下左右的xor值=0 题解:设第一行的每个元素值为未知数 可以依次得到每一行的值 然后把最后一行由题意条件 得到$m$个方程 高斯消元解一下 bitset ...
- 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个 ...
- [洛谷P1527] [国家集训队]矩阵乘法
洛谷题目链接:[国家集训队]矩阵乘法 题目背景 原 <补丁VS错误>请前往P2761 题目描述 给你一个N*N的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第K小数. 输入输出格式 输入 ...
- 【题解】洛谷P3166 [CQOI2014] 数三角形(组合+枚举)
洛谷P3166:https://www.luogu.org/problemnew/show/P3166 思路 用组合数求出所有的3个点组合(包含不合法的) 把横竖的3个点共线的去掉 把斜的3个点共线的 ...
随机推荐
- Beta版本敏捷冲刺每日报告——Day1
1.情况简述 Beta阶段第一次Scrum Meeting 敏捷开发起止时间 2017.11.2 08:00 -- 2017.11.2 21:00 讨论时间地点 2017.11.2晚6:00,软工所实 ...
- Beta阶段敏捷冲刺报告-DAY4
Beta阶段敏捷冲刺报告-DAY4 Scrum Meeting 敏捷开发日期 2017.11.5 会议时间 11:30 会议地点 羽毛球场 参会人员 全体成员 会议内容 bug的原因讨论, 测试内容安 ...
- 团队作业9——事后分析(Beta版本)
事后诸葛亮分析 1. 总结 团队合照 a. 项目管理之事后诸葛亮会 ·设想和目标 (1)我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 个人学习 ...
- JAVA_SE基础——27.匿名对象
黑马程序员入学blog... 匿名对象:没有引用类型变量指向的对象称作为匿名对象. 匿名对象要注意的事项:1. 我们一般不会给匿名对象赋予属性值,因为永远无法获取到.2. 两个匿名对象永远都不可能是同 ...
- jenkins简单安装及配置(Windows环境)
jenkins是一款跨平台的持续集成和持续交付.基于Java开发的开源软件,提供任务构建,持续集成监控的功能,可以使开发测试人员更方便的构建软件项目,提高工作效率. Windows平台下,一般安装方法 ...
- LDAP apacheds解决方案
Apache DS 配置与管理 LADP基本介绍 LDAP(轻量级目录访问协议)以目录的形式来管理资源(域用户,用户组,地址簿,邮件用户,打印机等等). 特点: 1. LDAP是一种网略协议而 ...
- spring-oauth-server实践:授权方式四:client_credentials 模式下access_token的产生
授权结果 获取access_token成功, 访问资源服务器API http://localhost:9000/api-gateway-engine/unity/user_info?access_to ...
- RxJava系列2(基本概念及使用介绍)
RxJava系列1(简介) RxJava系列2(基本概念及使用介绍) RxJava系列3(转换操作符) RxJava系列4(过滤操作符) RxJava系列5(组合操作符) RxJava系列6(从微观角 ...
- vue.js+socket.io+express+mongodb打造在线聊天[二]
vue.js+socket.io+express+mongodb打造在线聊天[二] 在线地址观看 http://www.chenleiming.com github地址 https://github. ...
- Lua编写wireshark插件初探——解析Websocket上的MQTT协议
一.背景 最近在做物联网流量分析时发现, App在使用MQTT协议时往往通过SSL+WebSocket+MQTT这种方式与服务器通信,在使用SSL中间人截获数据后,Wireshark不能自动解析出MQ ...