題意:給出乙個模3意義下的矩陣,每次選中乙個元素就可以使得自身+2,上下左右元素+1。求所有元素變成0的一種解。 o(
(nm)
3)怎麼會不炸!怎麼會不炸!好吧就是不炸,可能在消元的時候0比較多吧=。= 可以為什麼不用列舉自由元呢?不是很懂這個資料=。=
直接按照上下左右自身的元素對自己的貢獻建立方程組暴力消元,遇到自由元直接取0(?),然後輸出。注意是模3意義下的方程組,仿照一下開關問題就行了。
#include
#include
#include
#include
#include
using
namespace
std;
#define maxn 905
#define free free
int a[maxn][maxn];
int mp[maxn][maxn];
intfree[maxn*maxn]; //標記自由元
int x[maxn*maxn], cnt; //解集 自由元個數
int n, m;
void debug () cout
<< endl;
}cout
<< endl;
}int gauss ()
if (max_r != k)
if (a[k][col] == 0)
for (int i = k+1; i < n*m; i++)
a[i][j] = ((a[i][j] * t1 - a[k][j] * t2) % 3 + 3) % 3;}}
}}
for (int i = k; i < n*n; i++)
for (int i = n*m-1; i >= 0; i--)
return0;}
void solve ()
}return ;
}#define move move
const
int move[4][2] = , , , };
bool legal (int x, int y)
int main ()
}memset (a, 0, sizeof a);
for (int i = 0; i < n; i++) }}
for (int i = 0; i < n; i++)
}//debug ();
solve ();
}return
0;}
HDU 5755(高斯消元)
2016 07 27 14 23 49 傳送門 題意 給出 n m 的矩陣,每個元素為 0 或 1 或 2,每次操作可以選擇乙個元素給他加2,且其上下左右的格仔裡的數加1,所有操作都在模3域內操作。問乙個可行的操作方案,使得方案總數不超過 2 n m 1 n m 30 思路 這題雖然可以暴力建出 9...
高斯消元 求解模線性方程 HDU5755
題目大意 給你乙個二維的模3意義下的矩陣。選擇乙個位置可以使得該位置 2,其他相鄰四個位置 1.讓你將其變成全0矩陣。在2nm 2nm2n m次操作內.n m 30 n,m leq 30 n,m 30 題目思路 洛谷p3164一樣的思路。其實異或線性方程就是模2意義的高斯消元嘛。本質一樣。那麼求解模...
高斯消元 浮點高斯消元
浮點數高斯消元 問題描述 給出乙個線性方程組,有n個方程組,m個未知數。解這個線性方程組。輸入格式 第1行 2個整數n和m,n,m 400,且n不一定等於m 接下來n行,每行m 1個整數,表示乙個方程的m個未知數的係數和常數 輸出格式 如果無解,輸出 no solution 如果有唯一解,輸出m行,...