高斯消元總結

2021-09-26 02:40:33 字數 1660 閱讀 4171

乙個無向連通圖,頂點從1 編號到n,邊從1 編號到m。

小z 在該圖上進行隨機遊走,初始時小z 在1 號頂點,每一步小z 以相等的概率隨機選 擇當前頂點的某條邊,沿著這條邊走到下乙個頂點,獲得等於這條邊的編號的分數。當小z 到達n 號頂點時遊走結束,總分為所有獲得的分數之和。

現在,請你對這m 條邊進行編號,使得小z 獲得的總分的期望值最小。

30%的資料滿足n≤10

100%的資料滿足2≤n≤500且是乙個無向簡單連通圖。

要對邊進行編號使總分期望最小,就按貪心的思想,把小的編號給期望經過次數多的邊,於是問題轉化為求每條邊經過的期望次數。

又因為一條邊的期望次數也不好直接求,考慮先算每個點的期望經過次數。

顯然n為1,剩下的點可考慮是從哪個點來的,可按度數等概率轉移,高斯消元即可求得。

於是對於邊,肯定是兩個點互相走到時會經過,加上兩個點分別的期望次數/度數即可。

給定乙個無向連通圖,其節點編號為1到n,其邊的權值為非負整數。

試求出一條從1號節點到n號節點的路徑,使得該路徑上經過的邊的權值的「xor和」最大。該路徑可以重複經過某些節點或邊,當一條邊在路徑**現多次時,其權值在計算「xor和」時也要被重複計算相應多的次數。

直接求解上述問題比較困難,於是你決定使用非完美演算法。具體來說,從1號節點開始,以相等的概率,隨機選擇與當前節點相關聯的某條邊,並沿這條邊走到下乙個節點,重複這個過程,直到走到n號節點為止,便得到一條從1號節點到n號節點的路徑。顯然得到每條這樣的路徑的概率是不同的並且每條這樣的路徑的「xor和」也不一樣。

現在請你求出該演算法得到的路徑的「xor和」的期望值。

【樣例1解釋】

有1/2的概率直接從1號節點走到2號節點,該路徑的「xor和」為3;

有1/4的概率從1號節點走一次1號節點的自環後走到2號節點,該路徑的「xor和」為1;

有1/8的概率從1號節點走兩次1號節點的自環後走到2號節點,該路徑的「xor和」為3;......;

依此類推,可知「xor和」的期望值為:3/2+1/4+3/8+1/16+3/32+......=7/3,約等於2.333。

【資料規模】

輸入的資料保證圖連通.

30%的資料滿足n≤30

100%的資料滿足2≤n≤100,m≤10000

但是圖中可能有重邊或自環。

對於異或問題先考慮拆位,對於每一位,只關心1-n路徑上邊的異或和是否為1。

於是考慮dp,記在u時異或和為1的概率。但要記1-u還是u-n呢?如果記1-n的話,其實轉態是不明確的,因為乙個點可能經過多次,比如一開始在1號點,之後又繞回來了,這樣根本不知道記的是哪個時間的狀態,於是異或和為1的概率也不明確,無法轉移。注意到走到n就停止了,這樣把轉態設計為u-n的異或和為1的概率,就是乙個明確、可轉移的狀態了,同樣高斯消元即可求得。

構造乙個n*m的01矩陣,滿足每個點和其周圍所有點的異或和為0。

n,m<=40

直接構造沒有思路,考慮題目的要求,發現就是一些值的異或和為0,於是列出方程可高斯消元解出,但效率是o(n

6)

o(n^)

o(n6)的。

考慮如何減掉一些未知數,因為題目的限制是有規律的,考慮利用這樣的規律,發現每乙個數可以有前兩行的數確定,於是只要確定第一行的數,就可確定這個矩陣。

考慮如何列出第一行未知數的方程,在n+1行限制比較方便,n+1行的所有元素都必須為0,依此可列出方程求解。

高斯消元總結

這裡介紹的是高斯 約旦消元法。相對於傳統的高斯消元,約旦消元法的精度更好 更簡單,沒有回帶的過程。約旦消元法大致思路如下 1.選擇乙個尚未被選過的未知數作為主元,選擇乙個包含這個主元的方程。2.將這個方程主元的係數化為1。3.通過加減消元,消掉其它方程中的這個未知數。4.重複以上步驟,直到把所有式子...

高斯消元 浮點高斯消元

浮點數高斯消元 問題描述 給出乙個線性方程組,有n個方程組,m個未知數。解這個線性方程組。輸入格式 第1行 2個整數n和m,n,m 400,且n不一定等於m 接下來n行,每行m 1個整數,表示乙個方程的m個未知數的係數和常數 輸出格式 如果無解,輸出 no solution 如果有唯一解,輸出m行,...

學習總結 高斯消元

想不到大名鼎鼎的高斯消元就只是個o n3 的玩意兒 演算法流程還是先走一下 1 先將每一條方程的各個係數都統計進矩形,並且將方程等式右邊的常數放進矩形的最後一列,以便之後進行統一的計算。2 我們要做的就是對於每乙個未知數 x y 只留下一條式子中含有它的係數,並且這個係數為 1 3 對於每乙個未知數...