vjudge
乙個無向連通圖,頂點從1編號到n,邊從1編號到m。
小z在該圖上進行隨機遊走,初始時小z在1號頂點,每一步小z以相等的概率隨機選 擇當前頂點的某條邊,沿著這條邊走到下乙個頂點,獲得等於這條邊的編號的分數。當小z 到達n號頂點時遊走結束,總分為所有獲得的分數之和。
現在,請你對這m條邊進行編號,使得小z獲得的總分的期望值最小。
無向圖考慮
a ns
=∑i=
1mei
∗val
ians=\sum_^m
ans=∑i
=1m
ei∗
vali
其中 e
ie_i
ei 為第 i
ii 條邊經過期望次數
顯然 e
ie_i
ei 大的配 val
ival_i
vali
小的
如果我們的邊拆點的話點太多了,因為這種有依賴性的 dpdp
dp一般要用高斯消元
考慮 e
ie_i
ei 的期望可以利用期望的線性性使得
e i=
fude
u+fv
de
ve_i=\frac+\frac
ei=de
ufu
+d
evf
v,其中 fu,
fv
f_u,f_v
fu,fv
為經過點的期望次數
轉化為求點的經過期望次數
根據期望的線性性列出狀態轉移方程:
f u=
∑v∈t
oufv
dev+
[u==
1]
f_u=\sum_\frac+[u==1]
fu=∑v
∈tou
de
vfv
+[
u==1]f1
f_1f1
會加1是因為一來就在 1
11根據 e
ie_i
ei 的變形可以推出 fn=
0f_n=0
fn=
0 (可理解為隨機遊走時候一碰到 n
nn 點就消失了)
變形後高斯消元即可
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
#define ll long long
//#define getchar() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 21, stdin), p1 == p2) ? eof : *p1++)
//char buf[(1 << 21) + 1], *p1 = buf, *p2 = buf;
inline
intread()
while
('0'
<=c&&c<=
'9') x=
(x<<3)
+(x<<1)
+(c^48)
,c=getchar()
;return
!f?x:
-x;}
#define maxn 500
#define inf 0x3f3f3f3f
int de[maxn+5]
;vector<
int> g[maxn+5]
;double a[maxn+5]
[maxn+5]
;double
abs(
double x)
void
print
(int n)
void
guass
(int n)
//print(n);
}for
(int i=
1;i<=n;i++
) a[i]
[n+1]/
=a[i]
[i];
//print(n);
return;}
double e[maxn*maxn+5]
;int u[maxn*maxn+5]
,v[maxn*maxn+5]
;int
main()
for(
int u=
1;ua[1
][n]=1
;guass
(n-1);
for(
int i=
1;i<=m;i++
) e[i]
=a[u[i]
][n]
/de[u[i]
]+a[v[i]
][n]
/de[v[i]];
sort
(e+1
,e+m+1)
;double ans=0;
for(
int i=
1;i<=m;i++
) ans+
=(m-i+1)
*e[i]
;printf
("%.3lf\n"
,ans)
;return0;
}
HNOI2013 遊走題解
題目鏈結 給你乙個 n 個點 m 條邊的無向連通圖從 1 號點出發,每次隨機選擇當前頂點的某條邊走到下乙個點,並獲得這條邊的分數,分數為這條邊的編號,一旦到了 n 號點就結束遊走,總分為獲得分數的總和。安排每條邊的編號,使總分的期望值最小,並輸出最小的期望值 看完題目能夠發現,我們只要求出經過每一條...
bzoj3143 Hnoi2013 遊走 期望
顯而易見,要最小化總分就要讓期望經過次數最多的邊權值最小。而邊的期望可以通過點的期望匯出。點的期望又可以通過和它相連的點的權值匯出。就可以列成一組方程。再高斯消元一下就可以解出來了。include include include includeusing namespace std const do...
HNOI2015 期望dp 亞瑟王
描述 小 k 不慎被 ll 邪教 了,程度深到他甚至想要從亞瑟王邪教中脫坑。他決定,在脫坑之前,最後再來打一盤亞瑟王。既然是最後一戰,就一定要打得漂 亮。眾所周知,亞瑟王是乙個看臉的遊戲,技能的發動都是看概率的。作為乙個非 洲人,同時作為乙個前 oier,小 k 自然是希望最大化造成傷害的期望值。但...