1. 程式人生 > >[Codeforces 1042E]Vasya and Magic Matrix(期望 DP)

[Codeforces 1042E]Vasya and Magic Matrix(期望 DP)

Address

Meaning

  • 一個 n n m m 列的矩陣,每個位置有個權值
  • 給定一個起始位置 ( r , c ) (r,c)
  • 每次等概率隨機地移動到一個權值嚴格比自己小的位置,得分為移動前和移動後的兩個位置的歐幾里得距離的平方,這樣一直移動直到無法移動為止
  • 求得分的期望
  • 1 n , m 1000 1\le n,m\le 1000

Solution

  • 非常簡單的期望 DP
  • 先把權值排序,設排序後第 i i 個位置座標為 ( x i , y i ) (x_i,y_i) ,權值為 a i a_i
  • f [ i ] f[i] 表示從第 i i 個位置開始移動,直到無法移動的期望得分
  • 很容易得出轉移
  • f [ i ] = 1 c n t i j = 1 , a j < a i i 1 { f [ j ] + ( x i x j ) 2 + ( y i y j ) 2 } f[i]=\frac 1{cnt_i}\sum_{j=1,a_j<a_i}^{i-1}\{f[j]+(x_i-x_j)^2+(y_i-y_j)^2\}
  • 其中 c n t i cnt_i 表示權值嚴格小於 a i a_i 的位置個數
  • 複雜度 O ( n 2 m 2 ) O(n^2m^2)
  • 強行推一波式子
  • f [ i ] = 1 c n t i j = 1 , a j < a i i 1 { f j + x j 2 + y j 2 2 x i x j 2 y i y j } + x i 2 + y i 2 f[i]=\frac 1{cnt_i}\sum_{j=1,a_j<a_i}^{i-1}\{f_j+x_j^2+y_j^2-2x_ix_j-2y_iy_j\}+x_i^2+y_i^2
  • = 1 c n t i ( j = 1 , a j < a i i 1 { f j + x j 2 + y j 2 } 2 x i j = 1 , a j < a i i 1 x j 2 y i j = 1 , a j < a i i 1 y j ) + x i 2 + y i 2 =\frac 1{cnt_i}(\sum_{j=1,a_j<a_i}^{i-1}\{f_j+x_j^2+y_j^2\}-2x_i\sum_{j=1,a_j<a_i}^{i-1}x_j-2y_i\sum_{j=1,a_j<a_i}^{i-1}y_j)+x_i^2+y_i^2
  • 參與轉移的 j j