比較容易的概率題。
case1~5:
這是一棵樹。
我們求出每個點i度數du[i],只走子樹的期望距離g[i]和不走子樹的期望距離f[i],這比較好求。
然後累加即可。
case6~10:
圖中有乙個環,然後環上的點都是一棵樹的根。
對於每棵樹,我們同樣求出每個點i度數du[i],只走子樹的期望距離g[i]。
那麼怎麼求不走子樹的期望距離f[i]呢?
我們先求環上的點的f[i]吧。
我們列舉環上的點i,再列舉環上的另乙個點j,求出i能到到j的距離概率和距離(有2個方向,都一樣),然後f[i]+=概率*(距離+g[j])。
現在每棵樹的根節點的不走子樹的期望距離f[i]已經算出來了,然後樹中的點f[i]也就很容易了。
然後累加即可。
#include#includeview code#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
//#include適用於cf,uoj,但不適用於poj
using
namespace
std;
typedef
long
long
ll;typedef
double
db;typedef pair
pii;
typedef complex
cp;#define mmst(a,v) memset(a,v,sizeof(a))
#define mmcy(a,b) memcpy(a,b,sizeof(a))
#define re(i,a,b) for(i=a;i<=b;i++)
#define red(i,a,b) for(i=a;i>=b;i--)
#define fi first
#define se second
#define m_p(a,b) make_pair(a,b)
#define sf scanf
#define pf printf
#define two(k) (1<
inline t sqr(t x)
template
inline void upmin(t &t,t tmp)
template
inline void upmax(t &t,t tmp)
const db eps=1e-9
;inline
int sgn(db x)
const db pi=acos(-1.0
);inline
void clear(vector *a,int a,int b)
inline
intgint()
for(;z!=eof && isdigit(z);res=res*10+z-'
0',z=getchar());
return (neg)?-res:res;
}inline ll gll()
for(;z!=eof && isdigit(z);res=res*10+z-'
0',z=getchar());
return (neg)?-res:res;
}const
int maxn=100000
;int
n,m;
int now,first[maxn+100
];struct tedgeedge[2*maxn+100
];db ans;
int cnt,root[maxn+100
];int id[maxn+100
];db lon[maxn+100],val[maxn+100],h[maxn+100
];inline
void addedge(int u,int v,int
dis)
int du[maxn+100],fa[maxn+100
];db g[maxn+100],f[maxn+100
];int head,tail,que[maxn+100
];inline
void bfs(int
s)
}red(j,tail,1)
}inline
void bfs2(int
s)
re(j,
1,tail)
}}int vis[maxn+100
];int top,sta[maxn+100],last[maxn+100
];inline
void
dfs()
if(v!=fa[u] &&vis[v])
}if(i==-1)vis[sta[top--]]=0
; }
}int
main()
if(m==n-1
)
ans/=db(n);
pf("%0.5lf\n
",ans);
return0;
}else
}re(i,
1,cnt)
}p=i;
gailv=1e10;
t=0.0
;
while(1
)
}h[i]/=1e10;
}mmst(fa,0);
re(i,
1,cnt)du[root[i]]+=2,f[root[i]]=h[i],bfs2(root[i]);
ans=0.0
; re(i,
1,n)
ans/=db(n);
pf("%0.5lf\n
",ans);
return0;
}return0;
}
BZOJ2878 Noi2012 迷失遊樂園
樹形dp orz orz orz orz orz tunix orz orz orz orz orz 簡單寫一下,怕自己忘了。先考慮沒有環的情況。令點1為樹根,設do wn i 表示從i開始向下走的期望步數,up i 表示往上走的。do wn i 的計算很簡單 do wn i down j w i ...
bzoj2878 Noi2012 迷失遊樂園
題目鏈結 求基環樹上以任意點為起點的簡單路徑期望長度。啊啊啊好醜陋。右轉題解 lcf 注意特判環上最後乙個點,以及算up的時候是否是根節點。bzoj2878 include include include include include include include define ll long ...
CODE 遊樂園的迷宮
題目 題目描述 description 迷宮可是每個遊樂園必不可少的專案,菜菜當然是要嘗試一下啦。這個迷宮比較特殊。與其說是迷宮,倒不如說是乙個巨大的格仔。遊樂園給菜菜發了一張地圖,地圖上標明了,這個格仔由n行m列共n m個小格仔組成。有的格仔可以正常走,標為 有的格仔有陷阱不能走,標為 有的格仔比...