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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

51nod-动物与游戏【树链剖分,线段树】

發布時間:2023/12/3 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 51nod-动物与游戏【树链剖分,线段树】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

正題

題目鏈接:http://www.51nod.com/Contest/Problem.html#contestProblemId=3957


題目大意

nnn個點的一棵樹,第iii個節點上的動物有ai100\frac{a_i}{100}100ai??的概率加入,每個加入的動物都會每秒向父節點移動。

對于第iii只動物,如果它到達一個節點時還沒有其他動物比他早來過,那么它的權值加一。

現在對于每一只動物求它參加的話它的期望權值。

1≤n≤105,1≤ai≤1001\leq n\leq 10^5,1\leq a_i\leq 1001n105,1ai?100


解題思路

考慮一個動物xxx能拿到一個節點yyy的權值的條件,也就是yyy的子樹中深度比xxx小的動物都不參賽的概率。

也就是對于一個動物xxx,動物zzz能對它產生影響首先要求depz<depxdep_z<dep_xdepz?<depx?,并且只會從LCA(x,z)LCA(x,z)LCA(x,z)處向上開始產生影響。

發現一個特點是從LCALCALCA處產生影響,這就和[LNOI2014]LCA很像了,我們對于會產生影響的zzz把它到根節點上的路徑都修改了,然后直接詢問xxx到根節點路徑上的權值就好了。

至于depz<depxdep_z<dep_xdepz?<depx?這個條件我們把所有節點按照深度從小到大排序然后處理即可。

時間復雜度:O(nlog?2n)O(n\log^2 n)O(nlog2n)


code

#include<cstdio> #include<cstring> #include<algorithm> #define ll long long using namespace std; const ll N=1e5+10,P=998244353; struct node{ll to,next; }a[N<<1]; ll n,tot,cnt,inv100,fa[N],ls[N],c[N],p[N],ans[N]; ll siz[N],dep[N],son[N],top[N],seq[N],id[N]; ll power(ll x,ll b){ll ans=1;while(b){if(b&1)ans=ans*x%P;x=x*x%P;b>>=1;}return ans; } void addl(ll x,ll y){a[++tot].to=y;a[tot].next=ls[x];ls[x]=tot;return; } struct Seq_Tree{ll w[N<<2],lazy[N<<2];void Downdata(ll x){if(lazy[x]==1)return;w[x*2]=w[x*2]*lazy[x]%P;w[x*2+1]=w[x*2+1]*lazy[x]%P;lazy[x*2]=lazy[x*2]*lazy[x]%P;lazy[x*2+1]=lazy[x*2+1]*lazy[x]%P;lazy[x]=1;return;}void Build(ll x,ll L,ll R){lazy[x]=1;if(L==R){w[x]=1;return;}ll mid=(L+R)>>1;Build(x*2,L,mid);Build(x*2+1,mid+1,R);w[x]=w[x*2]+w[x*2+1];}void Change(ll x,ll L,ll R,ll l,ll r,ll val){if(L==l&&R==r){w[x]=w[x]*val%P;lazy[x]=lazy[x]*val%P;return;}ll mid=(L+R)>>1;Downdata(x);if(r<=mid)Change(x*2,L,mid,l,r,val);else if(l>mid)Change(x*2+1,mid+1,R,l,r,val);else Change(x*2,L,mid,l,mid,val),Change(x*2+1,mid+1,R,mid+1,r,val);w[x]=(w[x*2]+w[x*2+1])%P;}ll Ask(ll x,ll L,ll R,ll l,ll r){if(L==l&&R==r)return w[x];ll mid=(L+R)>>1;Downdata(x);if(r<=mid)return Ask(x*2,L,mid,l,r);if(l>mid)return Ask(x*2+1,mid+1,R,l,r);return (Ask(x*2,L,mid,l,mid)+Ask(x*2+1,mid+1,R,mid+1,r))%P;} }T; void dfs1(ll x){siz[x]=1;dep[x]=dep[fa[x]]+1;for(ll i=ls[x];i;i=a[i].next){ll y=a[i].to;if(y==fa[x])continue;fa[y]=x;dfs1(y);siz[x]+=siz[y];if(siz[y]>siz[son[x]])son[x]=y;}return; } void dfs2(ll x){id[x]=++cnt;seq[cnt]=x;if(son[x]){top[son[x]]=top[x];dfs2(son[x]);}for(ll i=ls[x];i;i=a[i].next){ll y=a[i].to;if(y==son[x]||y==fa[x]) continue;top[y]=y;dfs2(y);} } void Updata(ll x,ll val){while(x){T.Change(1,1,n,id[top[x]],id[x],val);x=fa[top[x]];}return; } ll Ask(ll x){ll ans=0;while(x){(ans+=T.Ask(1,1,n,id[top[x]],id[x]))%=P;x=fa[top[x]];}return ans; } bool cmp(ll x,ll y) {return dep[x]<dep[y];} signed main() {inv100=power(100,P-2);scanf("%lld",&n);for(ll i=1;i<=n;i++){scanf("%lld",&c[i]);p[i]=i;c[i]=(100-c[i])*inv100%P;}for(ll i=1;i<n;i++){ll x,y;scanf("%lld%lld",&x,&y);addl(x,y);addl(y,x);}dfs1(1);top[1]=1;dfs2(1);sort(p+1,p+1+n,cmp);T.Build(1,1,n);for(ll i=2,l=1;i<=n+1;i++){if(dep[p[i]]!=dep[p[i-1]]){ll r=i-1;for(ll j=l;j<=r;j++)ans[p[j]]=Ask(p[j]);for(ll j=l;j<=r;j++)Updata(p[j],c[p[j]]);l=i;}}for(ll i=1;i<=n;i++)printf("%lld\n",ans[i]);return 0; }

總結

以上是生活随笔為你收集整理的51nod-动物与游戏【树链剖分,线段树】的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 爱蜜臀av | 国偷自拍| 免费看一级片 | 免费色站| 女人性高潮视频 | 亚洲永久无码7777kkk | 免费在线日韩av | 在线观看视频www | 欧美粗大猛烈老熟妇 | 91精品国产综合久 | 在线中文字幕亚洲 | 精品国产一区二区三区久久久蜜臀 | aaaa级片| 欧美黑人疯狂性受xxxxx野外 | 日日碰狠狠躁久久躁蜜桃 | 午夜激情一区 | 特黄aaaaaaaaa毛片免费视频 | 午夜激情视频在线观看 | 亚洲最大av| 欧美久久久久久久久久久久久久 | 男插女动态图 | 精品一区二区三区久久久 | 久久久在线视频 | 人人妻人人澡人人爽国产一区 | 一级片黄色片 | 五月天视频网站 | 九九热精品视频在线 | 99伊人网 | 久久久久一区二区三区 | 久久99伊人 | 日b影院 | 中文字幕在线播放视频 | 黄色三极片 | 无码人妻丰满熟妇区bbbbxxxx | 国产日韩一区二区 | 熟女熟妇伦久久影院毛片一区二区 | 美女131爽爽爽| 中文在线免费观看 | 精品人妻一区二区三区久久嗨 | 丰满大肥婆肥奶大屁股 | 国产精品尤物视频 | 天天色棕合合合合合合合 | 91九色蝌蚪porny | 中文字幕爱爱 | 亚洲做受高潮无遮挡 | 狠狠做| 黄页网站免费在线观看 | 亚洲精品久久久久久久久久吃药 | 高清日韩一区二区 | 无码人妻丰满熟妇区五十路百度 | 国产偷拍一区二区 | 在线看a网站 | 亚洲一卡二卡 | 国内自拍小视频 | 色眯眯av | 日本黄色视 | 伦av综合一区 | 美女脱了内裤喂我喝尿视频 | 古代黄色片 | 在线免费看av | av激情在线观看 | 深夜福利在线播放 | 1级片在线观看 | 国产亚洲综合av | 欧美成人片在线 | 久久久999| 秋霞成人午夜鲁丝一区二区三区 | 国产一级片一区二区 | 99热精品久久 | 男人的天堂va | 欧美多人猛交狂配 | 久久久新| 一卡二卡国产 | 久久99九九 | 欧美18—19性高清hd4k | 一起射导航 | 亚洲精品电影网 | 538国产精品一区二区免费视频 | 91视频看片 | 亚洲二区在线观看 | 亚洲九九色 | 欧美日韩视频一区二区 | 男生尿隔着内裤呲出来视频 | 欧美日韩少妇精品 | 男人在线网站 | 樱花电影最新免费观看国语版 | 日韩欧美一二三区 | 久久黄色网络 | 精品视频一区二区三区四区五区 | 最黄一级片 | 国产性猛交xxxⅹ交酡全过程 | 欧美黑人性受xxxx精品 | 91在线看片 | 最近日本中文字幕 | 国产在线欧美 | 香蕉视频91 | 啦啦啦免费高清视频在线观看 | 国产精品99久久久久久一二区 | 精品中文字幕视频 |