日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CF1540B-Tree Array【数学期望,dp】

發布時間:2023/12/3 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CF1540B-Tree Array【数学期望,dp】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

正題

題目鏈接:https://www.luogu.com.cn/problem/CF1540B


題目大意

nnn個點的一棵樹,開始隨機選擇一個點標記,然后每次隨機選擇一個與被標記點連邊的點標記,按照標記順序排列,求期望逆序對數。

1≤n≤2001\leq n\leq 2001n200


解題思路

顯然是考慮兩個點(x,y)(x,y)(x,y)產生的貢獻。

枚舉根,然后兩個點到根路徑上公共的部分沒有用,考慮不公共的部分一個長度為nnn,另一個長度為mmm,假設nnn先標記,此時我們可以枚舉nnn標記的時候mmm還有多少個沒標記的,概率就是
12∑i=0m?1(n?1+ii)12n?1+i\frac{1}{2}\sum_{i=0}^{m-1}\binom{n-1+i}{i}\frac{1}{2}^{n-1+i}21?i=0m?1?(in?1+i?)21?n?1+i

這個顯然可以用dpdpdp進行O(n2)O(n^2)O(n2)預處理。

然后在LCALCALCA處暴力枚舉點對就好了,時間復雜度:O(n3)O(n^3)O(n3)


code

#include<cstdio> #include<cstring> #include<algorithm> #define ll long long using namespace std; const ll N=210,P=1e9+7; struct node{ll to,next; }a[N<<1]; ll n,tot,cnt,f[N][N],ls[N],v[N],dep[N],inv[N],ans; void addl(ll x,ll y){a[++tot].to=y;a[tot].next=ls[x];ls[x]=tot;return; } void calc(ll x,ll fa,ll fr,ll L){v[++cnt]=x;ans+=x<fr;for(ll i=1;i<=L;i++){int n=dep[x]-dep[fr];int m=dep[v[i]]-dep[fr];if(v[i]>x)swap(n,m);(ans+=f[n-1][m-1]*inv[2]%P)%=P;}for(ll i=ls[x];i;i=a[i].next){ll y=a[i].to;if(y==fa)continue;calc(y,x,fr,L);}return; } void solve(ll x,ll fa){dep[x]=dep[fa]+1;for(ll i=ls[x];i;i=a[i].next){ll y=a[i].to;if(y==fa)continue;solve(y,x);}cnt=0;for(ll i=ls[x];i;i=a[i].next){ll y=a[i].to;if(y==fa)continue;calc(y,x,x,cnt);}return; } signed main() {scanf("%lld",&n);inv[1]=1;for(ll i=2;i<=n;i++)inv[i]=P-inv[P%i]*(P/i)%P;f[0][0]=1;for(ll i=0;i<=n;i++)for(ll j=0;j<=n;j++){if(!i&&!j)continue;f[i][j]=((i?f[i-1][j]:0)+(j?f[i][j-1]:0))*inv[2]%P;}for(ll i=0;i<=n;i++)for(ll j=1;j<=n;j++)(f[i][j]+=f[i][j-1])%=P; for(ll i=1,x,y;i<n;i++){scanf("%lld%lld",&x,&y);addl(x,y);addl(y,x);}for(ll i=1;i<=n;i++)solve(i,0);printf("%lld\n",ans*inv[n]%P);return 0; }

總結

以上是生活随笔為你收集整理的CF1540B-Tree Array【数学期望,dp】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。