标签:
Description
Input
Output
Sample Input
2 3 yyy yyy yyy 5 wwwww wwwww wwwww wwwww wwwww
Sample Output
0 15
题意:
给你一个只含‘Y‘ 或 ‘W‘颜色的图
每次你可以选择图上一个点 (i,j)
那么 (i,j)及四周的 点的颜色都会改变
给出原始图,问你最少次数的选择使得 最终图的颜色全部为 ‘Y‘;
题解:
高斯消元n*n个方程
只有自己和四周的点的改变会使其变化
#include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #include<cstring> using namespace std; #pragma comment(linker, "/STACK:102400000,102400000") #define ls i<<1 #define rs ls | 1 #define mid ((ll+rr)>>1) #define pii pair<int,int> #define MP make_pair typedef long long LL; const long long INF = 1e18; const double Pi = acos(-1.0); const int N = 600+10, M = 1e2+11, mod = 1e9+7, inf = 0x3fffffff; int a[N][N],x[N],free_x[N],n; int ss[4][2] = {-1,0,0,-1,1,0,0,1}; int Guass(int equ,int var) { int i,j,k; int max_r; int col; int ta,tb; int LCM; int temp; int free_index; int num=0; for(int i=0;i<=var;i++) { x[i]=0; free_x[i]=0; } col=0; for(k = 0;k < equ && col < var;k++,col++) { max_r=k; for(i=k+1;i<equ;i++) { if(abs(a[i][col])>abs(a[max_r][col])) max_r=i; } if(max_r!=k) { for(j=k;j<var+1;j++) swap(a[k][j],a[max_r][j]); } if(a[k][col]==0) { k--; free_x[num++]=col; continue; } for(i=k+1;i<equ;i++) { if(a[i][col]!=0) { for(j=col;j<var+1;j++) { a[i][j] ^= a[k][j]; } } } } for (i = k; i < equ; i++) { if (a[i][col] != 0) return inf; } for(i=var-1;i>=0;i--) { x[i]=a[i][var]; for(j=i+1;j<var;j++) x[i]^=(a[i][j]&&x[j]); } int cnt = 0; for(int i = 0; i < n*n; ++i) if(x[i]) cnt++; return cnt; } char ch[N][N]; int main() { int T; scanf("%d",&T); while(T--) { scanf("%d",&n); memset(a,0,sizeof(a)); for(int i = 0; i < n; ++i) scanf("%s",ch[i]); for(int i = 0; i < n; ++i) { for(int j = 0; j < n; ++j) { a[i*n+j][n*n] = 1^(ch[i][j] == ‘y‘); } } for(int i = 0; i < n; ++i) { for(int j = 0; j < n; ++j) { a[i*n+j][i*n+j] = 1; for(int k = 0; k < 4; ++k) { int ii = i + ss[k][0]; int jj = j + ss[k][1]; if(ii < 0 || jj < 0 || ii >= n ||jj >= n) continue; a[i*n+j][ii*n+jj] = 1; } } } int ans = Guass(n*n,n*n); if(ans == inf) puts("inf"); else printf("%d\n",ans); } return 0; }
POJ 1681 Painter's Problem 高斯消元
标签:
原文地址:http://www.cnblogs.com/zxhl/p/5885930.html