CSU1989 古怪的行列式 模擬

2021-08-06 03:06:58 字數 1968 閱讀 5761

這幾天,子浩君潛心研究線性代數。 行列式的值定義如下:

子浩君很厲害的,但是頭腦經常短路,所以他會按照行列式值的定義去計算,這個行列式子浩君也還是能算對的。但是,在計算的過程中,如果出現連續三行選取的元素為83(s),83(s),82(r)的話,子浩君會忍不住拿走它們:-d,然後這三個數的乘積將被視為1,而其它數值計算不變。那麼在子浩君的計算下,最後得到的行列式的值會為多少呢?

資料第一行為乙個整數t(t<=50)。 接下來有t組測試資料,每組資料開始有乙個整數n(2<=n<=8)。 接下來有n行數字,每行有n個數字,第ith行第jth個數字代表矩陣的第ith行第jth列的數字,保證每個數字在int範圍內的非負整數。

輸出乙個整數,保證在[-(2^63-1), 2^63-1]範圍內,即使在子浩君計算過程中也是。

4

21 1

0 13

83 1 1

0 83 1

0 0 82

383 1 1

0 82 1

0 0 83

383 1 1

0 83 1

0 1 82

1

1564898

-82

例如,當子浩君遇到a11

∗a22∗

a33∗a

44=83∗

83∗82∗

1 ,會計算成1 * 1 = 1,而83 * 82 * 83 * 1或者83 * 83 * 1 * 82則不會改變運算規則

資料量也小,就按照計算行列式的思路做就好了,用用next_permutation()還不是美滋滋

不過注意!字典序下乙個不一定和前乙個的逆序數隻差1!所以不能迴圈一次取一次反

我是暴力來的,也就每次多判斷最多28次,這個時間能接受

/**************************************

*source : csu1979

*knowledge point : adhoc

*author : csuzick

**************************************/

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long

#define mk(a,b) make_pair(a,b)

#define ull unsigned long long

#define mem(a,n) memset(a,n,sizeof(a))

#define fread freopen("in.txt","r",stdin)

#define fwrite freopen("out.txt","w",stdout)

#define n 1010

#define inf 0x3f3f3f3f

#define eps 1e-9

using

namespace

std;

int matri[8][8];

int per[8]=;

int main()

}sort(per,per+8);

sum=0;

doelse

}for(int i=1;ifor(int j=0;jif(per[i]while(next_permutation(per,per+n));

printf("%lld\n",sum);

}return

0;}

csuoj 古怪的行列式

這幾天,子浩君潛心研究線性代數。行列式的值定義如下 子浩君很厲害的,但是頭腦經常短路,所以他會按照行列式值的定義去計算,這個行列式子浩君也還是能算對的。但是,在計算的過程中,如果出現連續三行選取的元素為83 s 83 s 82 r 的話,子浩君會忍不住拿走它們 d,然後這三個數的乘積將被視為1,而其...

CSUOJ 1979 古怪的行列式

這幾天,子浩君潛心研究線性代數。行列式的值定義如下 其中,j1j2.jn 為排列j1j2.jn的逆序數。子浩君很厲害的,但是頭腦經常短路,所以他會按照行列式值的定義去計算,這個行列式子浩君也還是能算對的。但是,在計算的過程中,如果出現連續三行選取的元素為83 s 83 s 82 r 的話,子浩君會忍...

方陣和的行列式 方陣行列式的和

考慮同階方陣 a,b 問它們和的行列式與它們各自行列式的和是否相等 a b a b 結論是二者是不相等的。行列式的性質,我們知道,若行列式某 i 列 行 的元素都是 都可轉化為 兩數之和,則等於兩個行列式之和。d a11 a21 a n1a12 a22 a n2 b 1i c 1i b2i c2i ...