题目

给出一个\(2\times n\)个点的二分图的邻接矩阵\(M\)

以及\(m\)个行替换元,\(k\)个列替换元

\(q\)次询问:op u v 表示用第v个行/列替换元去替换矩阵的第u行/列

对初始以及每个操作矩阵输出完全匹配的方案数mod 2 的值

\(n ,m,k \le 10^3 \ , \ q \le 10^5\)

题解

  • 在mod 2 的意义下-1=1,所以完全匹配的方案数=\(det(M)\)

  • bitset 暴力高斯消元\(O(q\frac{n^3}{\omega})\)

  • 询问相当于每次替换一个行或者列,询问矩阵是否满秩

  • 考虑预处理出所有询问的答案

  • 由于替换某一行或者列最多使矩阵的秩加减1

  • 1.如果原矩阵的秩为\(n\):

    由于矩阵满秩,那么对于每一个\(n\)阶向量都可以被线性表示;

    对于每一个询问预处理出这样的表示,可以替换的就是系数为1的位置 

  • 2.如果原矩阵的秩为\(n-1\):

    一定存在并且仅存在一组线性相关的向量,它们的异或和为0向量

    在原来\(n\)个向量中,任意去掉其中的一个都是一个线性无关的组

    对原矩阵消元得到一个基,对一个询问能被线性表出,那么无论如何替换一定不满秩

    否则出现了一个\(n \)个向量的线性无关组,可以替换的就是最开始存在的线性相关那组向量中的任意一个

  • 时间复杂度:\(O(\frac{n^3}{\omega})\)

#include<bits/stdc++.h>
using namespace std;
const int N=1010;
typedef bitset<1010> Bit;
int n;
char s[N];
Bit a[N],b[N],p[N],q[N],c,ans[2][100000];int gauss(Bit*A,Bit*B){int i=1,j=1;for(;i<=n&&j<=n;++i,++j){int pos=i;while(pos<=n&&!A[pos][j])++pos;if(pos>n){i--;continue;}if(i!=pos)swap(A[i],A[pos]),swap(B[i],B[pos]);for(int k=i+1;k<=n;++k)if(A[k][j])A[k]^=A[i],B[k]^=B[i];}return i<n?0:i==n?2:1;
}void get(int fg,Bit*A,Bit*B,Bit C,Bit&re){int i=1,j=1,pos=0;for(;i<=n&&j<=n;++i,++j){if(!A[i][j]){pos=j,i--;continue;}if(C[j])C^=A[i],re^=B[i];}if(fg==2){if(C.test(pos))re=B[n];else re.reset();}
}int main(){freopen("maze.in","r",stdin);freopen("maze.out","w",stdout);int m,k,Q;scanf("%d",&n);for(int i=1;i<=n;++i){scanf("%s",s+1);p[i].set(i);q[i].set(i);for(int j=1;j<=n;++j)if(s[j]=='1')a[i].set(j),b[j].set(i);}int fg=gauss(a,p);gauss(b,q);//printf("%d:\n",fg);scanf("%d%d",&m,&k);for(int i=1;i<=m;++i){scanf("%s",s+1);c.reset();for(int j=1;j<=n;++j)if(s[j]=='1')c.set(j);if(!fg)continue;get(fg,a,p,c,ans[0][i]);}for(int i=1;i<=k;++i){scanf("%s",s+1);c.reset();for(int j=1;j<=n;++j)if(s[j]=='1')c.set(j);if(!fg)continue;get(fg,b,q,c,ans[1][i]);}puts(fg&1?"1":"0");scanf("%d",&Q);for(int i=1,op,u,v;i<=Q;++i){scanf("%d%d%d",&op,&u,&v);printf("%d\n",ans[op][v].test(u));}return 0;
}

转载于:https://www.cnblogs.com/Paul-Guderian/p/11094037.html

[JZOJ5553][20190625]谜相关推荐

  1. [Android Studio 权威教程]Windows下安装Android Studio

    从AS 0.5版本号開始使用.也是AS的推行者,在ApkBus公布的第一篇Android Studio Perview 2 获得了50K的浏览,1800多条回复下载. 在我的[Android Stud ...

  2. [沪江日语电台]ACG杂货铺02-乱唱地带

    [沪江日语电台]ACG杂货铺02-乱唱地带 策划录音:蛋蛋老师.小安安 后期女王:小安安 客串嘉宾:迟墨 绘图:蛋蛋老师 ACG=anime+comics+game=动画+漫画+游戏 ★欢迎大家加入恶 ...

  3. [高速通道进阶一]如何理解高速通道的就近接入和一点接入连接全球

    摘要: 经常有用户问,我在上海有个IDC,在北京有个VPC,我想通过专线把IDC和VPC连接起来,我是不是要找运营商直接拉一根上海到北京的专线?其实不是这样的,用户只需要接入到最近的接入点即可.高速通 ...

  4. live两种读音[liv][laiv]含义上的区别

    根据情况不同,读音不同 1.[liv] vi.活,生存:居住:住:继续存在,留存 vt.& vi.以某种方式生活 2.[laiv] adj.活的,有生命的:真正的:燃烧着的:带电的:未爆炸的: ...

  5. Android—App—必备开发组件—调试工具篇—Stetho[配合OkHttp框架使用]

    一.First and Foremost : 测试同学,在测试Android-App时,所需要的其中一个重要的技能即判断页面数据错误后,能迅速定位是服务器接口问题,还是APP逻辑问题.此时就需要知道服 ...

  6. 微信开放JS-SDK,助力网页开发[转自微信官方]

    为什么80%的码农都做不了架构师?>>>    微信公众平台今日面向开发者开放微信内网页开发工具包(微信JS-SDK). 通过微信JS-SDK提供的11类接口集,开发者不仅能够在网页 ...

  7. [新手-数据分析师]numpy学习笔记(2nd)

    为什么80%的码农都做不了架构师?>>>    今天主意是做numpy矩阵的运算. a = np.arange(9).reshape(3,3) b = np.ones((3,3)) ...

  8. 亚洲诚信带你玩转[2018国家网络安全宣传周]上海地区活动!

    为提升全社会的网络安全意识和安全防护技能,根据中央网信办统一部署,2018年国家网络安全宣传周于9月17日至23日在全国范围内举办,此次宣传周主题为"网络安全为人民,网络安全靠人民" ...

  9. 健康饮食动起来[我写绿色IT]

    作为我们IT从业者,电脑辐射是不可能避免的,它会引起自律神经失调.忧郁症,另外,电脑荧光屏不断变幻和上下翻滚的各种字符会刺激眼睛,电脑操作者常会感到眼睛疲劳.肩酸背痛.如在缺水.营养不足.缺乏维生素的 ...

最新文章

  1. android子线程没有运行完,android假如主线程依赖子线程A的执行结果,如何让A执行完成,之后主线程再往下执行呢?...
  2. java-数据库连接,分层实现增删改查测试
  3. 又一游戏大盗(完美世界、跑跑等)SysInfo1.dll
  4. 绝对定位的div图片居中自适应
  5. msp430 c语言开发环境,如何使用C语言来编写MSP430的高质量代码
  6. windows server 2012 R2 standard 评估版过期重启
  7. grafana + influxdb + telegraf , 构建性能监控平台
  8. windows linux 传文件_2种windows到linux上传文件的方法
  9. 【Windows 10 v1703】解决桌面出现Removable Storage Devices的问题
  10. 基于matlab模糊pid控制系统,基于MATLAB的模糊自适应PID控制器的设计
  11. 以前的东西-Mvp2
  12. 华盛酒店系统客户端连不上服务器,华盛酒店管理系统-客房管理系统-房务手册.pdf...
  13. 离散Hopfield神经网络的联想记忆—数字识别
  14. 物联网大数据商业模式画布-0406-v1.1王玉娟
  15. 155页4万字智慧交通电子警察系统平台解决方案
  16. Half-space Hyperplane
  17. 静候 CSDN 佳音
  18. CC2530+ESP8266使用MQTT协议上传阿里云的问题
  19. Java实例——线程
  20. ZCloud-搭建开发环境

热门文章

  1. 用MyEclipse JPA创建项目(四)
  2. 6.1-6.4 压缩打包介绍,压缩工具gzip,bzip2, xz
  3. 【OGG】OGG简单配置双向复制(三)
  4. 百度NLP模块使用手册——深度直击最新进展
  5. 《C#初学者指南》一第1章 初识C#
  6. Spring+SpringMVC+MyBatis+easyUI整合基础篇(一)项目简述及技术选型介绍
  7. 安卓真机测试遇到的检测不到安卓设备的问题
  8. 主流存储设备的现状和优缺点分析
  9. VMware 修复 View Planner中的严重RCE 漏洞
  10. Sophos 和 ReversingLabs 公开含2000万个 PE 文件的数据集