高斯消元结束后,若存在系数为0,常数不为0的行,则方程无解

若系数不为0的行有k个,则说明主元有k个,自由元有n-k个,方程多解

/*
给定n个开关的初始状态si,要求将其变成目标状态di
规定:
每个开关最多进行一次操作
给定一组对应关系(i,j),如果操作第i个开关那么第j个开关也会受影响
请问有多少种操作方式
设xi=0|1表示没按/按了第i个开关
系数矩阵A[i][j]表示按第j个开关对第i个开关有影响,A[i][i]=1
那么可以得到方程组
A[i][1]*x1 ^ A[i][2]*x2 ^ ... ^ A[i][n]*xn = si^di
把常数左移可得
A[i][1]*x1 ^ A[i][2]*x2 ^ ... ^ A[i][n]*xn ^ si^di = 0
方程组中的 A[i][j]*xj 代表第j个开关对第i个开关产生的影响,显然只有两个都为1时才会有影响
那么对以上方程组使用高斯消元即可!
可以对A数组进行状态压缩,A[i]表示第i个方程的系数矩阵,共n+1位,其中1-n表示系数,n+1表示常数 由于x的取值只能是0或1
所以有i个自由原,操作方式就有1<<i种
*/
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int A[],n,t,ans;
int main(){
cin>>t;
while(t--){
cin>>n;
//处理第n+1位,即常数
for(int i=;i<=n;i++)cin>>A[i];
for(int i=;i<=n;i++){
int tmp=;
cin>>tmp;
A[i]^=tmp;
}
for(int i=;i<=n;i++) A[i]|=<<i;//处理A[i][i]
int i,j;
while(cin>>i>>j && i)//A[j][i]=1
A[j]|=<<i;
ans=;
//开始高斯消元!
for(int i=;i<=n;i++){
//找到最大的A[i],即主元位最高的a[i]
for(int j=i;j<=n;j++)
if(A[j]>A[i])swap(A[j],A[i]);
//只有i-1个主元
if(A[i]==){ans=<<(n-i+);break;}
//只有常数项不是0
if(A[i]==){ans=;break;}
//把其余方程的A[i]的最高位减去
for(int k=n;k;k--)
if(A[i]>>k & ){//找到A[i]最高位的主元
for(int j=;j<=n;j++)
if(j!=i && (A[j]>>k & ))A[j]^=A[i];
break;
}
}
if(ans==)
puts("Oh,it's impossible~!!");
else cout<<ans<<endl;
}
}

高斯消元处理无解|多解情况 poj1830的更多相关文章

  1. 高斯消元与期望DP

    高斯消元可以解决一系列DP序混乱的无向图上(期望)DP DP序 DP序是一道DP的所有状态的一个排列,使状态x所需的所有前置状态都位于状态x前: (通俗的说,在一个状态转移方程中‘=’左侧的状态应该在 ...

  2. 单(single):换根dp,表达式分析,高斯消元

    虽说这题看大家都改得好快啊,但是为什么我感觉这题挺难.(我好菜啊) 所以不管怎么说那群切掉这题的大佬是不会看这篇博客的所以我要开始自嗨了. 这题,明显是树dp啊.只不过出题人想看你发疯,询问二合一了而 ...

  3. UVALive - 6185 Find the Outlier暴力填表+高斯消元+卡eps

    https://cn.vjudge.net/problem/UVALive-6185 我真的是服了orz eps 1e5,1e6过不了 开1e2 1e1都能过 题意:给你一个d阶多项式f的f(0),f ...

  4. 【BZOJ 4171】 4171: Rhl的游戏 (高斯消元)

    4171: Rhl的游戏 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 74  Solved: 33[Submit][Status][Discuss] ...

  5. ACM学习历程—UESTC 1219 Ba Gua Zhen(dfs && 独立回路 && xor高斯消元)

    题目链接:http://acm.uestc.edu.cn/#/problem/show/1219 题目大意是给了一张图,然后要求一个点通过路径回到这个点,使得xor和最大. 这是CCPC南阳站的一道题 ...

  6. poj1753(高斯消元解mod2方程组)

    题目链接:http://poj.org/problem?id=1753 题意:一个 4*4 的棋盘,初始时上面放满了黑色或白色的棋子.对 (i, j) 位置进行一次操作后 (i, j), (i + 1 ...

  7. poj2947(高斯消元解同模方程组)

    题目链接:http://poj.org/problem?id=2947 题意:有n 种装饰物,m 个已知条件,每个已知条件的描述如下: p start enda1, a2......ap (1< ...

  8. poj1222(枚举or高斯消元解mod2方程组)

    题目链接: http://poj.org/problem?id=1222 题意: 有一个 5 * 6 的初始矩阵, 1 表示一个亮灯泡, 0 表示一个不亮的灯泡. 对 (i, j) 位置进行一次操作则 ...

  9. POJ 2947-Widget Factory(高斯消元解同余方程式)

    题目地址:id=2947">POJ 2947 题意:N种物品.M条记录,接写来M行,每行有K.Start,End,表述从星期Start到星期End,做了K件物品.接下来的K个数为物品的 ...

随机推荐

  1. android 内存回收及怎样避免内存泄露

    http://blog.vunso.com/201307/android%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6%E6%9C%BA%E5%88%B6%E5%8F%8A% ...

  2. axios 在Vue全局引入的方法

    在main.js中: import axios form axios Vue.prototype.$axios = axios 组件中使用: submitFrom () { this.$axios.g ...

  3. android4.4之后的HttpUrlConnection的实现是基于okhttp

    首先看HttpUrlConnection使用 URL url = new URL("http://www.baidu.com"); HttpURLConnection urlCon ...

  4. 基于html2canvas实现网页保存为图片及图片清晰度优化

    一.实现HTML页面保存为图片 1.1 已知可行方案 现有已知能够实现网页保存为图片的方案包括: 方案1:将DOM改写为canvas,然后利用canvas的toDataURL方法实现将DOM输出为包含 ...

  5. 使用CORS方式跨域

    什么是CORS CORS(Cross-Origin Resource Sharing 跨源资源共享),当一个请求url的协议.域名.端口三者之间任意一与当前页面地址不同即为跨域. ===前端 不需要携 ...

  6. 【运维】虚拟机如何安装CentOS

    Centos是Linux发行版本之一. 接下来说说,如何在虚拟机上面安装Centos 1,创建虚拟机的过程本文就不再赘述,相信读者可以自己探索出来. 2,创建好一个空白的虚拟机之后,会看到一个编辑虚拟 ...

  7. 2. Spring Boot项目启动原理初探

    SpringBoot从宏观上说,就是对spring容器进行了一层包装.它内部的入口是利用 SpringApplication类的static的 run 方法进行启动的,调用的图: 上图中的这些方法都位 ...

  8. Linux IDR机制【转】

    转自:https://blog.csdn.net/av_geek/article/details/49640433 IDR机制在Linux内核中指的是整数ID管理机制. 实质上来讲,这就是一种将一个整 ...

  9. requests库入门07-patch请求

    使用data参数提交 设置邮件能见度,这个接口用来设置邮件是公共可见,还是私有的 import requests test_url = 'https://api.github.com' def get ...

  10. 后台拼接json字符串,传到前台时注意特殊符号处理

    1.后台拼接常用的形式:     sb.AppendFormat("\"字段名\":\"{0}\"", i + 1); 这个要注意字符串截断 ...