POJ 1753 Flip Game 高斯消元
和1222,1681差不多
POJ 1222 高斯消元更稳
POJ 1681 高斯消元 枚举自由变元
equ = 16 ,var = 16的方程组
#include <cstdio> #include <cmath> #include <cstring> #include <algorithm> #define INF 1e9 using namespace std;const int maxn = 20; int a[maxn][maxn]; int x[maxn],fre[maxn]; int dx[]= {0,0,-1,0,1}; int dy[]= {0,-1,0,1,0};void debug(int n) {for(int i=0; i<n; i++){for(int j=0; j<n; j++)printf("%d ", a[i][j]);printf(" %d\n", a[i][n]);}puts("**************************************************************"); }void init() {memset(a,0,sizeof(a));for(int i=0; i<4; i++)for(int j=0; j<4; j++)for(int k=0; k<5; k++){int nx = i+dx[k];int ny = j+dy[k];if(nx>=0 && nx <4 && ny>=0 && ny<4) a[i*4+j][nx*4+ny] = 1;} }int Guass(int equ,int var) { // debug(16);int row,col,num;num=row=col=0;while(row<equ && col<var){//列非零主int r=row;for(int i=row; i<equ; i++)if(a[i][col]!=0){r=i;break;}if(r!=row){for(int j=col; j<var+1; j++)swap(a[row][j],a[r][j]);}if(a[row][col]==0)//说明有自由变元 {fre[num++] = col;col++;continue;}//消元for(int i=row+1; i<equ; i++){if(a[i][col]==0) continue;for(int j=col; j<var+1; j++)a[i][j]^=a[row][j];} // debug(16);row++;col++;}for(int i=row; i<equ; i++)if(a[i][var]!=0) return INF;int sta=1<<(col-row);//自由变元有col-row个int res=INF;for(int k=0; k<sta; k++) //枚举所有变元 {int cnt=0;int index=k;for(int j=0; j<num; j++){x[fre[j]]=(index&1);if(x[fre[j]]) cnt++;index>>=1;}for(int i=row-1; i>=0; i--){x[i]=a[i][var];for(col=i+1; col<var; col++)x[i]^=(a[i][col]*x[col]);if(x[i])cnt++;}res=min(cnt,res);}return res; }int main() { // freopen("in.txt","r",stdin);char s[10][10];for(int i=0; i<4; i++)scanf("%s", s[i]);init();for(int i=0; i<4; i++)for(int j=0; j<4; j++)a[i*4+j][16] = (s[i][j]=='b'? 0:1);int ans1 = Guass(16,16);init();for(int i=0; i<4; i++)for(int j=0; j<4; j++)a[i*4+j][16] = (s[i][j]=='w'? 0:1);int ans2 = Guass(16,16);if(min(ans1,ans2) == INF) puts("Impossible");else printf("%d\n", min(ans1, ans2));return 0; }
转载于:https://www.cnblogs.com/pach/p/7300179.html
POJ 1753 Flip Game 高斯消元相关推荐
- poj 1753 Flip Game 高斯消元 异或方程组 求最值
题目链接:http://poj.org/problem?id=1753 题意:给出一张4*4的图,表示16个方格的初始颜色的情况(白或黑),相邻方格操作的时候会相互影响,求最少的操作次数,使得每个方格 ...
- POJ 2947 Widget Factory (高斯消元解同余方程组)
题意:N种物品,M条记录,接写来M行,每行有K,str1,str2,表示第i个记录从星期str1到星期str2,做了K件物品,接下来的K个数为物品的编号.求做每个物品所需的时间,并且最后结果在3-9之 ...
- poj 1830 开关问题 高斯消元
题目链接 高斯消元模板, 判断是否有解以及变元的数量. 1 #include <iostream> 2 #include <vector> 3 #include <cst ...
- POJ 1830 开关问题 高斯消元
题意:给你N个开关,其中某些开关之间是相互影响的,即一个开关控制多个,那么每个开关操作与否为一个变元,有N个变元,开关之间相互影响的系数设为1,否则为0,对模2高斯消元求解自由变元个数. #inclu ...
- poj 1681 Painter#39;s Problem(高斯消元)
http://poj.org/problem? id=1681 求最少经过的步数使得输入的矩阵全变为y. 思路:高斯消元求出自由变元.然后枚举自由变元,求出最优值. 注意依据自由变元求其它解及求最优值 ...
- POJ 1222 EXTENDED LIGHTS OUT(高斯消元)
[题目链接] http://poj.org/problem?id=1222 [题目大意] 给出一个6*5的矩阵,由0和1构成,要求将其全部变成0,每个格子和周围的四个格子联动,就是说,如果一个格子变了 ...
- POJ 1222 1681 1830 3185 开关灯问题 (高斯消元 异或方程组)
POJ 1222 EXTENDED LIGHTS OUT 基本的开关灯问题.还保证唯一解. 我们把每一个灯泡当成一个状态xi,总共有30个,而且每个灯与其他灯的关系也很明显.所以我们就可以列30方程3 ...
- 高斯消元 zoj 3645 poj 1222/XOR消元
double a[maxn][maxn] , x[maxn] ; //a[i][j] 系数矩阵 , a[i][n+1] = y[i] , x解 int n ; //n个方程 void guass(){ ...
- 开关问题 POJ - 1830 高斯消元
开关问题 POJ - 1830 有N个相同的开关,每个开关都与某些开关有着联系,每当你打开或者关闭某个开关的时候,其他的与此开关相关联的开关也会相应地发生变化,即这些相联系的开关的状态如果原来为开就变 ...
最新文章
- Java---Socket编程UDP/TCP
- Go实现简单的K-V存储
- 查看suse系统版本
- Oracle 中的SID是什么意思?有什么作用?
- pycharm+python+bootstrap写一个登陆界面_Python--day56(前后台数据交互、bootstrap)
- C语言实现并查集(Disjoint set或者Union-find set)(附完整源码)
- 服务器自检后显示scsi,请问一下,如何检测SCSI +RAID 5设置是否正确??
- 数据库杂谈(三)——关系代数
- “npm ERR! code ELIFECYCLE npm ERR! errno 1”问题
- php 图像居中裁剪函数,PHP 实现的自定义图像居中裁剪函数示例
- Android NDK开发(1)----- Java与C互相调用实例详解
- c# word 在当前光标位置插入内容
- java fop_java – 未找到类FOP
- 快速使用easy rule
- [可解释机器学习]Task07:LIME、shap代码实战
- 电脑重装系统按哪个键进入u盘启动项
- python scripting for arcgis_Python Scripting for ArcGIS Pro
- 你为什么会选择做程序员?
- (导数)微分与积分的概念
- 1 软件需求的本质(1)