HDU 5755 高斯消元

2021-07-15 16:38:50 字數 1284 閱讀 7180

題意:給出乙個模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行,...