今天主要做了做總結,先是自己做總結,然後下午和做數學的同學一塊做了總結和討論,感覺是很好的過程,每個人都更清楚了自己的不足,知道自己接下來該多去看什麼,大家也能更好地統一進度,接下來我要看polya定理的更多題型,莫比烏斯也要進一步理解,然後組合數學之前的東西也要再回顧一下。
貼一下部分總結:
高斯消元
高斯消元法就是求解線性方程組的乙個方法,方法本身是乙個模板性方法,具體步驟:由原線性方程組得到增廣矩陣,用高斯消元法得到下三角或上三角形式的矩陣,由先得到的解帶入其餘方程的除所有解。
一般要用列選主元消元法 ,比如當前要處理第i行,那麼要用aii去消去同列元素,aii就是主元,此時在沒處理過的行中選第i列絕對值最大的那個行與當前行交換,用交換後的主元去消除同列其他元素,可以減小運算的誤差。
還注意判斷無解的情況。
有一大類題型就是求解異或方程組,經典題型就是開關燈,用異或xor做的:poj 1222 extended lights out,給你乙個5*6的格仔,每個格仔中有燈(亮著1,暗著0),每次你可以把乙個暗的點亮(或者亮的熄滅)然後它上下左右的燈也會跟著變化。最後讓你把所有的燈熄滅,問你應該改變哪些燈。
題目就是開始給乙個01矩陣代表對應點的初始狀態,每個點可以改變狀態,而且這個點狀態的改變會影響其他點,求改變哪些點能將所給矩陣的點全變為0,怎麼把這個狀態矩陣轉化為方程組再轉化為矩陣,
其實相當於對於每個點解乙個方程:
初始的狀態 xor 自己操作沒操作 xor 周圍的四個點操作沒操作 (對本點有影響的點變操作沒操作) = 目標狀態 (全為0)
兩邊同時xor之前的狀態。
自己操作沒操作 xor 周圍的四個點操作沒操作 = 初始的狀態
得到關於每個點的乙個方程:ai1*x1 xor ai2*x2 xor ai3*x3 xor ...xor ain*xn = bi
所以對於乙個方程,常數bi是之前的初始狀態即輸入的狀態
xi是對每個燈操作與否,1為操作,0不操作,是要解出的答案。
a(i,j)是燈j的開關對i的影響,是需要自己求的陣列。
總共n*m個點,即得到n*m個方程,即可得到(n*m)*(n*m)係數矩陣,增廣矩陣為(n*m)*(n*m+1),注意題給的燈的初始狀態n*m矩陣,與這裡方程矩陣的區別。
解異或方程組思想與解普通線性方程組思想相同,原理不同?。利用1 xor 1=0,還沒仔細看。
for(inti=m*n;i>=1;i--)
x[i]=a[i][m*n+1];
if(!x[i])
continue;
for(int j=i-1;j>=1;j--)
if(a[j][i])
a[j][m*n+1]^=x[i];
}
2023年2月24日訓練筆記
每次在家真的只想玩,放假這麼多天,感覺遠遠還沒玩夠。今天下午掏出電腦,可惜以網不好為理由玩起了遊戲,晚上看了會電視之後才看了看矩陣快速冪,然後成功a出一道水題,很明顯矩陣快速冪功能是計算矩陣的冪。主要是解決求遞推公式的高位項,應該是模板性知識點,主要是求通項公式,然後找到對應轉移矩陣,明天再弄弄這個...
2023年8月2日訓練筆記
今天上午再補昨天杭電多校4的題目,b題的莫隊演算法還差一些需要明天再看看,好在明天沒有比賽。今天的牛客多校賽打的就很一般了,出了兩道題,其中g題看到題意與之前的一道數論題很像,所以就做的麻煩了一些,而且當時我敲 乙個二分調半天,最後還是隊友改了改二分過的,同時也學到隊友的較好的二分形式,然後做的比較...
10月1日(週日訓練筆記)
假期的第一天,今天一天也就做了兩個數狀陣列的題目,其實要善於觀察每個題目,尋找共同點和相似之處,比如今天我做的題目,hh的項鍊和另外乙個題目,其實是乙個型別,只不過是問法相反了,稍微改一下更新即可,所以觀察題目很重要。今天一天還不是很在狀態,所以做題也是非常的慢和毫無思路條例,今天晚上做了乙個稍微綜...