题意 题目链接 Sol 异或高斯消元的板子题. bitset优化一下,复杂度\(O(\frac{nm}{32})\) 找最优解可以考虑高斯消元的过程,因为异或的特殊性质,每次向下找的时候找到第一个1然后交换就行,这样显然是最优的 #include<bits/stdc++.h> using namespace std; const int MAXN = 2001; inline int read() { char c = getchar(); int x = 0, f = 1; while(c…
P2447 [SDOI2010]外星千足虫 题目描述 公元2089年6月4日,在经历了17年零3个月的漫长旅行后,“格纳格鲁一号”载人火箭返回舱终于安全着陆.此枚火箭由美国国家航空航天局(NASA)研制发射,行经火星.金星.土卫六.木卫二.谷神星.“张衡星”等23颗太阳系星球,并最终在小行星“杰森星”探寻到了地外生命.宇航员在“杰森星”地表岩层下45.70米位置发现一批珍贵的活体生命样本,并将其带回检测.在带回的活体样本中,最吸引人的当属这些来自外星的千足虫了.这些虫子身躯纤长,身体分为若干节.…
题目大意:有$n$个数,每个数为$0$或$1$,给你其中一些关系,一个关系形如其中几个数的异或和是多少,问最少知道前几个关系就可以得出每个数是什么,并输出每个数 题解:异或方程组,和高斯消元差不多,就是把加减改成了异或. 卡点:用$bitset$优化,输出时输反了 C++ Code: #include <algorithm> #include <iostream> #include <bitset> #define maxn 1010 #define maxm 2010…
题目大意:给定一个 M 个含 N 个未知数的异或方程组,保证有解,若存在唯一解,给出至少需要几个方程才能得出唯一解,若不存在,直接输出不存在. 题解:异或方程组也满足类似初等行变换的操作,只不过所有的操作都是异或.依旧采用高斯消元来处理异或方程组,即:对于每列来说,从等于当前列的行号开始遍历每一行,找到一个当前列的系数是 1 的行,并进行交换操作.交换后,对改行下面的所有行来说,若当前列的值是 1,则进行异或操作.最后回代即可求出所有的未知数的奇偶性. 代码如下 #include <bits/s…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1923 懒得贴题目了......这就是解一个异或方程组的裸题...... YY了一下异或方程就没毛病了! 感受了一下bitset的力量噢噢噢!!!!!! #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #i…
一开始以为是异或高斯消元,实际上是简单线性基. 直接往线性基里插入,直到线性基满了就解出来了. // luogu-judger-enable-o2 #include<bits/stdc++.h> #define il inline #define vd void typedef long long ll; il int gi(){ int x=0,f=1; char ch=getchar(); while(!isdigit(ch)){ if(ch=='-')f=-1; ch=getchar()…
题目 P2447 [SDOI2010]外星千足虫 解析 sol写到自闭,用文字描述描述了半个小时没描述出来,果然还是要好好学语文 用高斯消元求解异或方程组. 因为 \(奇数\bigoplus奇数=偶数\) \(偶数\bigoplus偶数=偶数\) \(奇数\bigoplus偶数=奇数\) \(0\)为偶数,\(1\)为奇数, \((奇数+奇数)\mod 2=0\) \((偶数+偶数)\mod 2=0\) \((奇数+偶数)\mod 2=1\) 若把第一个里面的奇偶数分别换成\(1\)和\(0\)…
题目链接:https://www.luogu.org/problemnew/show/P2447 dalao们都说简单...解异或方程组 可我不是dalao qwq #include <algorithm> #include <cstdio> #include <cmath> #include <iostream> #include <bitset> using namespace std; ; ; char s[maxn]; bitset<…
原题传送门 根据题意,题目给的每个操作就相当于异或上选中的那几只虫子的足数(mod 2)等于0/1 这是一个异或方程组,珂以用高斯消元解出每个虫子的足数(mod 2).所需最小次数或判断有多解 但是看题目数据范围\(n \leq 1000,m \leq 2000\),如果直接高斯消元\(O(n^2m)\)的话超时无疑 观察这题的个性:方程组中要通过上下行异或进行消元,这是位运算,一定珂以用bitset优化 我们对每一行开一个bitset,这样消元时直接把两行的bitset异或起来,复杂度为\(O…
题意 给定 \(n\) 个变量和 \(m\) 个异或方程,求最少需要多少个才能确定每个变量的解. \(\texttt{Data Range:}1\leq n\leq 10^3,1\leq m\leq 2\times 10^3\) 题解 高斯消元解异或方程组. 求解这个东西可以直接高斯约旦法,主要问题是第一问. 注意,第一问不等同于求矩阵的秩,因为要求是选一段前缀,矩阵的秩是可以任意选的. 这个时候考虑对选主元过程进行贪心,每一次拿那个位置最前面并且满足条件的当主元来消即可.因为拿靠后的那个方程来…