POJ 1830 高斯消元

原创 2012年03月30日 18:48:18

http://poj.org/problem?id=1830

依旧高斯消元,不解释

方程建立很简单,如果有解,解的个数便是2^(自由变元个数),因为每个变元都有两种选择

/*
ID:cxlove
PROB:poj 1830 开关问题
DATA:2012.3.30
HINT:高斯消元
*/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int s[35],e[35],a[35][35],n;
int gauss(){
	int i,j;
	for(i=1,j=1;i<=n&&j<=n;j++){
		int k=i;
		for(;k<=n;k++)
			if(a[k][j])
				break;
		if(a[k][j]){
			for(int r=1;r<=n+1;r++)
				swap(a[i][r],a[k][r]);
			for(int r=1;r<=n;r++)
				if(r!=i&&a[r][j])
					for(k=1;k<=n+1;k++)
						a[r][k]^=a[i][k];
			i++;
		}
	}
	for(j=i;j<=n;j++)
		if(a[j][n+1])
			return -1;
	return 1<<(n-i+1);
}
int main(){
	int t,i,j;
	scanf("%d",&t);
	while(t--){
		scanf("%d",&n);
		memset(a,0,sizeof(a));
		for(i=1;i<=n;i++)
			scanf("%d",&s[i]);
		for(j=1;j<=n;j++){
			scanf("%d",&e[j]);
			if(s[j]!=e[j])
				a[j][n+1]=1;
			a[j][j]=1;
		}			
		while(scanf("%d%d",&i,&j)&&i+j)
			a[j][i]=1;
		int ans=gauss();
		if(ans==-1)
			printf("Oh,it's impossible~!!\n");
		else
			printf("%d\n",ans);
	}
	return 0;
}



【POJ1830】开关问题 高斯消元求自由元

题意:中文题。 题解: 呃,求自由元个数,然后输出1 如果无解输出那个题中给的串。 诶网上代码真不可看,我绝望了决定照自己想法随便写写。 然后49行没压行搞过去了。 网上全是100行+什么心态...
  • Vmurder
  • Vmurder
  • 2015年02月04日 09:55
  • 1753

POJ1830,01矩阵高斯消元

拿到这道题后,没啥思路,后来看了几份解题报告后,才发现这题用线性方程组来解,终于知道了线性代数在ACM的用武之地了。由于是中文题,题目解释略。直接说解题思路:设A矩阵是灯泡关系矩阵,A[[I][J]表...
  • liverpippta
  • liverpippta
  • 2012年07月09日 19:56
  • 2543

POJ1830 开关问题

中文题目,就不说题目大意了
  • u011418307
  • u011418307
  • 2016年08月26日 15:17
  • 446

POJ 1830 开关问题

开关问题 Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 7739 Accepted: 3037Descript...
  • LuRiCheng
  • LuRiCheng
  • 2016年09月11日 22:03
  • 1173

[poj1830]: 开关问题

开关问题 Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 8666   Accepted:...
  • xljer_
  • xljer_
  • 2017年06月30日 20:50
  • 291

POJ 1830

#include #include #include #include using namespace std; const int maxn = 33; int a[maxn][maxn]; in...
  • zz_1215
  • zz_1215
  • 2012年07月23日 00:21
  • 568

poj 1830 开关问题(高斯消元)

终止状态是从初始状态由开关组合影响而形成的,那么就有一个等式使得初始状态可以到达终止状态, 例如a,b,c三个开关 E[a] = (xa * mp[a][a]) ^ (xb * mp[a][b]) ^...
  • ljd4305
  • ljd4305
  • 2013年09月27日 16:56
  • 1896

poj 1830 开关问题 1830 高斯消元

第一题。。。用到了线代的知识抑或情况变成上阶梯矩阵然后求解#include #include #include #include #include using namespace std; int a...
  • acblacktea
  • acblacktea
  • 2016年08月10日 23:00
  • 201

POJ 1830 高斯消元

http://poj.org/problem?id=1830 依旧高斯消元,不解释 方程建立很简单,如果有解,解的个数便是2^(自由变元个数),因为每个变元都有两种选择 /* ID:cxlove...
  • ACM_cxlove
  • ACM_cxlove
  • 2012年03月30日 18:48
  • 3284

POJ1830开关问题——gauss消元

高斯消元入门
  • u012476429
  • u012476429
  • 2014年05月09日 10:03
  • 874
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POJ 1830 高斯消元
举报原因:
原因补充:

(最多只允许输入30个字)