ACM訓練日記 1月30日

2021-08-15 05:14:04 字數 1524 閱讀 8065

今天看了高斯消元的題目,感覺看的有點慢,發現看完發現全都是關於點燈染色的題目,記得曾經做過一道概率的題目也可以用高斯消元解,只是沒有點燈那麼難。

總的來說今天看的題目解題方法分為三種,一種使用列舉的這個我不說了,另外兩種都是關於高斯消元的,是對矩陣模型的兩種應用。

方法一:    就像poj1681     來自

解題思路: 

我們可以首先來構造乙個矩陣,這個矩陣式幹啥的呢,我們可以認為這個矩陣是按下乙個格仔之後它能夠作用的範圍,將能夠作用的範圍用1表示否則用0表示。來舉個例子 

就 根據乙個3*3的矩陣,對於第一行第一列的元素來說,它可以影響的範圍是它自己 還有它的右面的值和它的下面的值,矩陣中其餘的值都是0,也就是說 

a(0,0)= 

1 1 0 

1 0 0 

0 0 0 

a(0,1)= 

1 1 1 

1 0 0 

0 0 0 

現在我們設乙個l矩陣,表示初始的狀態,如果是y就是0,否則就是1,也就是說我們需要將當前的矩陣操為全是0的矩陣 

l + x(1,1)*a(1,1) + x(1,2)*a(1,2) + x(1,3)*a(1,3) + x(2,1)*a(2,1) + … + x(3,3)*a(3,3) = 0 (1) 

上述 方程的 x 表示的是乙個未知數,因為我們不知道是否是按下這個按鈕。那麼x(i, j)=0表示不按,否則表示按。那麼我們現在就是求乙個這樣的方程解最小的x,那麼上述方程中的矩陣a可以用乙個比較大 的矩陣n*n的來表示,然後就是轉換一下關係就行了(具體在**中有體現)。那麼現在就是n個未知數,n個方程,在(1)中,可以兩邊加上l,那麼就是變成了: 

x(1,1)*a(1,1) + x(1,2)*a(1,2) + x(1,3)*a(1,3) + x(2,1)*a(2,1) + … + x(3,3)*a(3,3) = l(2) 

依據矩陣每一種狀態建立新矩陣,就像上題,還要繼續將其化出來,比如第乙個式子應該是x1+x2+x3=l(1,1),依次化出來,建立增廣矩陣,然後用高斯消元解出來。

方法二:

這種方法主要就是利用關係,a(i,j)表示j位置變化是否對i位置有影響,如poj1830,

來自:將矩陣每一列想象為乙個開關按下後產生的效果(1表示狀態翻轉,0表示不變),比如,第二列就表示按下第二個開關,則第二個開關的本身狀態要改變(這就是把對角線0換成1的原因),受第二個開關影響的開關j狀態也要改變,恰好對應鄰接矩陣中a[j, 2]=1 

把a寫成分塊矩陣的形式,每一列作為乙個子矩陣,則有a=[a1, a2, a3],此處ai均為列向量,設第i個開關按下次數為xi,xi=0或1(開關按兩下和沒按是等效的,0/1就夠了) 

記初始狀態b0=[0,0,0],最終狀態b1=[1,1,1],則狀態變化b=b0^b1=[1,1,1],這裡b也是列向量。目標就是求x1a1 + x2a2 +x3a3 = b的解的個數(此處的加是模2加,也就是異或,下同) 

還有像poj1753利用狀態壓縮列舉所有變元的情況(2^k種),其實複雜度和深搜一樣的。

明天繼續補高斯消元不同種的題目。

ACM訓練日記 1月4日

新的一年的第一篇半周總結。昨天剛結束了常微分考試,考的我拔涼拔涼的,常微分老師對我們這一級真的是關照,相比15級的常微分期末題,難度提公升好多。qaq,還是好好準備物理,英語吧。雖然這半周考試有點緊張,但還是有有點收穫的,其實看了一些部落格,關於概率的主要知識點主要就是求期望和概率dp,其他還有結合...

ACM訓練日記 1月11日

最後一波期末考馬上就要來臨,這個半周主要補了一下題目。整理幾道印象深刻的題目吧。hello 2018 c.party lemonade 題意 給出n,l。下面c1,c2,cn。表示1公升花費c1,2公升花費c2,4公升花費c3,2 n 1 公升花費cn,求買l公升最少花費多少。我看許多題解都是用一種...

ACM訓練日記 1月22日

因為 初等數論 還有一些比較重要的東西沒看到,還不想放棄。另外又必須利用3到4天看完組合數學的知識點和部落格,所以這兩天的任務還是很重的。繼續整理一下吧。一,初等數論 潘承洞 1,證明 0 mod 2 交 1 mod 3 4 mod 6 證 由此知交設a 2m 3n 1,得2m 2n n 1得n 2...