POJ-1830
Time Limit: 1000MS | Memory Limit: 30000K | |
Total Submissions: 6294 | Accepted: 2393 |
Description
Input
每组测试数据的格式如下:
第一行 一个数N(0 < N < 29)
第二行 N个0或者1的数,表示开始时N个开关状态。
第三行 N个0或者1的数,表示操作结束后N个开关的状态。
接下来 每行两个数I J,表示如果操作第 I 个开关,第J个开关的状态也会变化。每组数据以 0 0 结束。
Output
Sample Input
- 2
- 3
- 0 0 0
- 1 1 1
- 1 2
- 1 3
- 2 1
- 2 3
- 3 1
- 3 2
- 0 0
- 3
- 0 0 0
- 1 0 1
- 1 2
- 2 1
- 0 0
Sample Output
- 4
- Oh,it's impossible~!!
Hint
第一组数据的说明:
一共以下四种方法:
操作开关1
操作开关2
操作开关3
操作开关1、2、3 (不记顺序)
- /**
- 题意:给一些开关,开某一个开关之后有的开关也会变化
- 做法:高斯消元 线性代数
- **/
- #include <iostream>
- #include <string.h>
- #include <stdio.h>
- #include <algorithm>
- #include <cmath>
- #define maxn 50
- using namespace std;
- int mmap[maxn][maxn];
- int start[maxn];
- int eed[maxn];
- int guess(int equ,int val)
- {
- int k=,col = ;
- int max_r = ;
- for(k=; k<equ&&col<val; k++,col++)
- {
- max_r = k;
- for(int i=k+; i<equ; i++)
- {
- if(abs(mmap[i][col]) > abs(mmap[max_r][col]))
- {
- max_r = i;
- }
- }
- if(max_r != k)
- {
- for(int i=k; i<val+; i++)
- {
- swap(mmap[k][i],mmap[max_r][i]);
- }
- }
- if(mmap[k][col] == )
- {
- k--;
- continue;
- }
- for(int i=k+; i<equ; i++)
- {
- if(mmap[i][col] != )
- {
- for(int j=col; j<val+; j++)
- {
- mmap[i][j] ^= mmap[k][j];
- }
- }
- }
- }
- ///上三角
- for(int i=k; i<equ; i++)
- {
- if(mmap[i][col]!=) return -;
- }
- return val-k;
- }
- int main()
- {
- //#ifndef ONLINE_JUDGE
- // freopen("in.txt","r",stdin);
- //#endif // ONLINE_JUDGE
- int T;
- scanf("%d",&T);
- while(T--)
- {
- int n;
- scanf("%d",&n);
- memset(start,,sizeof(start));
- memset(eed,,sizeof(eed));
- for(int i=; i<n; i++)
- {
- scanf("%d",&start[i]);
- }
- for(int i=; i<n; i++)
- {
- scanf("%d",&eed[i]);
- }
- int u,v;
- memset(mmap,,sizeof(mmap));
- while(scanf("%d %d",&u,&v))
- {
- if(u == && v == ) break;
- u--;
- v--;
- mmap[v][u] = ;
- }
- for(int i=; i<n; i++)
- {
- mmap[i][i] = ;
- }
- for(int i=; i<n; i++)
- {
- mmap[i][n] = start[i]^eed[i];
- }
- int res = guess(n,n);
- if(res == -) printf("Oh,it's impossible~!!\n");
- else printf("%d\n",<<res);
- }
- return ;
- }
POJ-1830的更多相关文章
- 【POJ 1830】 开关问题 (高斯消元)
开关问题 Description 有N个相同的开关,每个开关都与某些开关有着联系,每当你打开或者关闭某个开关的时候,其他的与此开关相关联的开关也会相应地发生变化,即这些相联系的开关的状态如果原来为 ...
- POJ 1830 开关问题(高斯消元)题解
思路:乍一看好像和线性代数没什么关系.我们用一个数组B表示第i个位置的灯变了没有,然后假设我用u[i] = 1表示动开关i,mp[i][j] = 1表示动了i之后j也会跟着动,那么第i个开关的最终状态 ...
- POJ 1222 POJ 1830 POJ 1681 POJ 1753 POJ 3185 高斯消元求解一类开关问题
http://poj.org/problem?id=1222 http://poj.org/problem?id=1830 http://poj.org/problem?id=1681 http:// ...
- POJ 1830 开关问题(高斯消元求解的情况)
开关问题 Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 8714 Accepted: 3424 Description ...
- 数学 --- 高斯消元 POJ 1830
开关问题 Problem's Link: http://poj.org/problem?id=1830 Mean: 略 analyse: 增广矩阵:con[i][j]:若操作j,i的状态改变则con[ ...
- POJ 1830 开关问题 【01矩阵 高斯消元】
任意门:http://poj.org/problem?id=1830 开关问题 Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 1 ...
- POJ 1830 开关问题 高斯消元,自由变量个数
http://poj.org/problem?id=1830 如果开关s1操作一次,则会有s1(记住自己也会变).和s1连接的开关都会做一次操作. 那么设矩阵a[i][j]表示按下了开关j,开关i会被 ...
- 【POJ 1830】 开关问题
[题目链接] http://poj.org/problem?id=1830 [算法] 列出异或方程组,用高斯消元求解 [代码] #include <algorithm> #include ...
- POJ 1830 开关问题 (高斯消元)
题目链接 题意:中文题,和上篇博客POJ 1222是一类题. 题解:如果有解,解的个数便是2^(自由变元个数),因为每个变元都有两种选择. 代码: #include <iostream> ...
- poj 1830 开关问题
开关问题 题意:给n(0 < n < 29)开关的初始和最终状态(01表示),以及开关之间的关联关系(关联关系是单向的输入a b表示a->b),问有几种方式得到最终的状态.否则输出字 ...
随机推荐
- 【DP】【P2224】】【HNOI2001】产品加工
传送门 Description 某加工厂有\(A\).\(B\)两台机器,来加工的产品可以由其中任何一台机器完成,或者两台机器共同完成.由于受到机器性能和产品特性的限制,不同的机器加工同一产品所需的时 ...
- 【DP优化】【P1430】序列取数
传送门 Description 给定一个长为n的整数序列,由A和B轮流取数(A先取).每个人可从序列的左端或右端取若干个数(至少一个),但不能两端都取.所有数都被取走后,两人分别统计所取数的和作为各自 ...
- HDU1569 最大流(最大点权独立集)
方格取数(2) Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- linux用户登录指定目录
一.创建用户和用户组 [root@web4 lianyu]# groupadd lianyu [root@web4 lianyu]# useradd lianyu -g lianyu [root@we ...
- maven插件理解
maven插件的主要功能是对用到的jar包进行管理,jar包先从本地仓库中获取,如果没有找到,则从远处中央仓库下载(需要联外网).本地仓库中的jar包可供所有maven工程使用,属于公共模块. mav ...
- CharSequence 去除两端空格
CharSequence就是字符序列,String, StringBuilder和StringBuffer都是其实现类. 模仿String.trim() 实现了一个CharSequence通用的去除两 ...
- java中各种循环
简单介绍一下java中的一些循环 package test; import org.apache.log4j.Logger; import org.junit.Test; public class F ...
- 如何查看由EF生成的SQL?
如下: query = from c in query group c by c.Id into cGroup orderby cGroup.Key select cGroup.FirstOrDefa ...
- IConfigurationSectionHandler 接口
IConfigurationSectionHandler 处理对特定的配置节的访问. 示例代码: public class MyConfig : IConfigurationSectionHandle ...
- Eclipse Tomcat Project报错:HTTP Status 404错误
想要在eclipse里部署tomcat,结果tomcat单独可以通过连接测试,用eclipse就404了 404肯定都是目录不对,试了半天在eclipse下改了一下配置和文件位置就行了 1.先在菜单栏 ...