51nod1604 對稱的方格顏色

2021-10-21 18:37:00 字數 1639 閱讀 9870

題目鏈結

觀察題目的性質:

1.中間列不存在第一列和第m

mm列同時不存在的顏色。

證明:假設第j

jj列具有第一列和第m

mm列都沒有的顏色。根據題目的性質,我們知道第[1,

j−1]

[1,j-1]

[1,j−1

]列的顏色種類和[j,

m][j,m]

[j,m

]列的顏色種數相同。我們知道[1,

j][1,j]

[1,j

]的顏色種類一定比[1,

j−1]

[1,j-1]

[1,j−1

]的多,而[j+

1,m]

[j+1,m]

[j+1,m

]的顏色種類一定不比[j,

m][j,m]

[j,m

]的多,由此可知不相等。

2.中間列不存在第一列或者第m

mm列不存在的顏色。

證明同上。

因此我們知道中間列的顏色一定是第一列和第m

mm列顏色的交集。列舉第一列和第m

mm列顏色的交集即可。

這裡要額外維護乙個dpdp

dp陣列,dp[

i]dp[i]

dp[i

]表示用i個顏色去染n

nn個方格的方案數,容斥原理維護即可。

複雜度o(n

2)o(n^2)

o(n2)。

#include

#include

#include

using

namespace std;

const

int n =

1e6+

100;

const

int mod =

1e9+7;

intqpow

(int x,

int n)

return res;

}int n, m, k;

int fac[n]

, rev[n]

, rff[n]

, dp[n]

;intc(

int n,

int m)

void

init()

dp[1]

=1;for

(int i =

2; i <= n; i++)}

}int

main()

}if(m ==2)

for(

int i =1;

2* i <= k; i++

) ans =

(ans +

1ll*

c(k, i)*c

(k - i, i)

% mod * dp[i]

% mod * dp[i]

)% mod;

printf

("%d\n"

, ans)

;return0;

}

1522 對稱矩陣的轉置

problem description 輸入矩陣的行數,再依次輸入矩陣的每行元素,判斷該矩陣是否為對稱矩陣,若矩陣對稱輸出 yes 不對稱輸出 no input 輸入有多組,每一組第一行輸入乙個正整數n n 20 表示矩陣的行數 若n 0,表示輸入結束 下面依次輸入n行資料。output 若矩陣對稱...

實驗四 2 對稱矩陣的壓縮儲存

1.實驗目的 1 掌握對稱矩陣的壓縮儲存方法 2 驗證對稱矩陣壓縮儲存的定址方法。2.實驗內容 1 建立乙個nxn的對稱矩陣a 2 將對稱矩陣用一維陣列sa儲存 3 在陣列sa中對矩陣a的任意元素進行定址操作。3.實驗程式 由於程式較為簡單,只需直接建立乙個工程,然後再在工程裡新建乙個源程式檔案即可...

58 對稱的二叉樹

請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。遞迴 先判斷當前兩個節點是否相等,再判斷 節點a左子樹,節點b右子樹 和 節點a右子樹,節點b左子樹 是否相等 ublic class solution return sym proot.l...