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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

loj2537 「PKUWC2018」Minimax 【概率 + 线段树合并】

發(fā)布時(shí)間:2025/3/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 loj2537 「PKUWC2018」Minimax 【概率 + 线段树合并】 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目鏈接

loj2537

題解

觀察題目的式子似乎沒有什么意義,我們考慮計(jì)算出每一種權(quán)值的概率
先離散化一下權(quán)值
顯然可以設(shè)一個(gè)\(dp\),設(shè)\(f[i][j]\)表示\(i\)節(jié)點(diǎn)權(quán)值為\(j\)的概率
如果\(i\)是葉節(jié)點(diǎn)顯然
如果\(i\)只有一個(gè)兒子直接繼承即可
如果\(i\)有兩個(gè)兒子,對(duì)于兒子\(x\),設(shè)另一個(gè)兒子為\(y\)
則有
\[f[i][j] += f[x][j](1 - p_i)\sum\limits_{k > j}f[r][k] + f[x][j]p_i\sum\limits_{k < j}f[r][k]\]

直接轉(zhuǎn)移是\(O(n^2)\)的,發(fā)現(xiàn)每個(gè)節(jié)點(diǎn)都有\(O(n)\)個(gè)位置需要轉(zhuǎn)移
考慮優(yōu)化,可以考慮線段樹合并

對(duì)于一個(gè)子樹中的權(quán)值\(x\),我們記另一棵子樹比它大的概率為\(maxa\)
\(x\)的概率要乘上\(maxa(1 - p_i) + (1 - maxa)p_i = maxa + p_i - 2p_imaxa\)

所以我們?cè)诰€段樹合并過程中,優(yōu)先合并右子樹,并更新兩棵子樹的\(maxa\)\(maxb\),就可以在合并過程中轉(zhuǎn)移了
復(fù)雜度\(O(nlogn)\)

#include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<map> #define Redge(u) for (int k = h[u],to; k; k = ed[k].nxt) #define REP(i,n) for (int i = 1; i <= (n); i++) #define mp(a,b) make_pair<int,int>(a,b) #define cls(s) memset(s,0,sizeof(s)) #define cp pair<int,int> #define LL long long int using namespace std; const int maxn = 300005,maxm = 8000005,INF = 1000000000,P = 998244353; inline int read(){int out = 0,flag = 1; char c = getchar();while (c < 48 || c > 57){if (c == '-') flag = -1; c = getchar();}while (c >= 48 && c <= 57){out = (out << 3) + (out << 1) + c - 48; c = getchar();}return out * flag; } int n,Ls[maxn],Rs[maxn],b[maxn],N,v10000; int rt[maxn],sum[maxm],ls[maxm],rs[maxm],tag[maxm],cnt; int p[maxn],maxa,maxb; inline int qpow(int a,int b){int re = 1;for (; b; b >>= 1,a = 1ll * a * a % P)if (b & 1) re = 1ll * re * a % P;return re; } inline void pd(int u){if (tag[u] > 1){sum[ls[u]] = 1ll * sum[ls[u]] * tag[u] % P;sum[rs[u]] = 1ll * sum[rs[u]] * tag[u] % P;tag[ls[u]] = 1ll * tag[ls[u]] * tag[u] % P;tag[rs[u]] = 1ll * tag[rs[u]] * tag[u] % P;tag[u] = 1;} } void modify(int& u,int l,int r,int pos){u = ++cnt; sum[u] = tag[u] = 1;if (l == r) return;int mid = l + r >> 1;if (mid >= pos) modify(ls[u],l,mid,pos);else modify(rs[u],mid + 1,r,pos); } int merge(int u,int v,int p){if (!u && !v) return 0;if (!u){maxb = (maxb + sum[v]) % P;int tmp;tmp = (((maxa + p) % P - 2ll * p * maxa % P) % P + P) % P;sum[v] = 1ll * sum[v] * tmp % P;tag[v] = 1ll * tag[v] * tmp % P;return v;}if (!v){maxa = (maxa + sum[u]) % P;int tmp;tmp = (((maxb + p) % P - 2ll * p * maxb % P) % P + P) % P;sum[u] = 1ll * sum[u] * tmp % P;tag[u] = 1ll * tag[u] * tmp % P;return u;}pd(u); pd(v);int t = ++cnt; tag[t] = 1;rs[t] = merge(rs[u],rs[v],p);ls[t] = merge(ls[u],ls[v],p);sum[t] = (sum[ls[t]] + sum[rs[t]]) % P;return t; } void dfs(int u){if (!Ls[u]) modify(rt[u],1,N,p[u]);else if (!Rs[u]) dfs(Ls[u]),rt[u] = rt[Ls[u]];else {dfs(Ls[u]); dfs(Rs[u]);maxa = maxb = 0;rt[u] = merge(rt[Ls[u]],rt[Rs[u]],p[u]);} } int ans; void cal(int u,int l,int r){if (l == r) {ans = (ans + 1ll * l * b[l] % P * sum[u] % P * sum[u] % P) % P;return;}pd(u);int mid = l + r >> 1;cal(ls[u],l,mid);cal(rs[u],mid + 1,r); } int main(){n = read(); read(); int x; v10000 = qpow(10000,P - 2);for (int i = 2; i <= n; i++){x = read();if (!Ls[x]) Ls[x] = i;else Rs[x] = i;}for (int i = 1; i <= n; i++){p[i] = read();if (!Ls[i]) b[++N] = p[i];else p[i] = 1ll * p[i] * v10000 % P;}sort(b + 1,b + 1 + N);for (int i = 1; i <= n; i++)if (!Ls[i]) p[i] = lower_bound(b + 1,b + 1 + N,p[i]) - b;dfs(1);cal(rt[1],1,N);printf("%d\n",ans);return 0; }

轉(zhuǎn)載于:https://www.cnblogs.com/Mychael/p/9215258.html

總結(jié)

以上是生活随笔為你收集整理的loj2537 「PKUWC2018」Minimax 【概率 + 线段树合并】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 免费在线播放视频 | 国产精品自拍一区 | 久久久久久免费毛片精品 | 人与性动交zzzzbbbb | 欧美老熟妇喷水 | caoporen超碰| 在线观看欧美亚洲 | 伊人久久五月 | 色哟哟国产精品色哟哟 | 日韩在线视频免费播放 | 国产情侣一区 | 又黄又爽的视频 | avt天堂网| 91偷拍一区二区三区精品 | 久久精品无码av | 热久久伊人 | 欧美精品一区三区 | 国产日韩欧美视频在线 | www成人啪啪18软件 | 成年人看片网站 | 黄色福利 | 99热这里只有精品3 成年人黄色网址 | 久久久精品人妻av一区二区三区 | 一区二区色 | 日本免费一二区 | 国产精品呻吟 | 国产自产精品 | 日本久久一区二区 | 99热这里只有精品4 精品国产黄色 | 在线观看中文字幕 | 成人精品久久久午夜福利 | 亚洲人成人一区二区在线观看 | 高清视频在线免费观看 | 朴银狐电影中文在线看 | 精品国产乱码久久久久久久 | 色涩综合 | youjizz少妇| www.狠狠爱 | 国产偷人 | 久久黄色网络 | 日韩一区二区视频在线播放 | 少妇做爰免费理伦电影 | 欧美18一19性内谢 | 住在隔壁的她动漫免费观看全集下载 | 一级黄色免费网站 | 免费看一区二区三区 | 99热com| av色噜噜| 国产精品边吃奶边做爽 | 日本欧美久久久久免费播放网 | 精品国产一级片 | 在线 日本 制服 中文 欧美 | 欧美日韩综合一区 | 蜜桃视频在线观看www | 天天干天天爽天天射 | 超碰97在线资源站 | 国产草草视频 | 亚洲精品无amm毛片 国内一区二区三区 | 97超碰总站 | 黄色三级网 | 无码人妻精品一区二区三应用大全 | 日本va欧美va欧美va精品 | 污黄网站在线观看 | 亚洲无遮挡 | 久久久久久久久久久久久久av | 色噜噜在线观看 | 天天摸夜夜爽 | 女人18片毛片60分钟 | jizz成熟丰满日本少妇 | 小泽玛利亚一区二区三区视频 | av青青草原 | 麻豆爱爱视频 | 夜夜操狠狠操 | 欧美性受xxxxxx黑人xyx性爽 | 欧美老熟妇乱大交xxxxx | xxx69美国 | 97国产免费 | 午夜看片 | 日韩xxx高潮hd | 亚洲激情在线观看 | 日韩精品一区二区三区高清免费 | 国产精品一二三区视频 | 国产福利免费在线观看 | 欧美18一19性内谢 | 色网在线看| 欧美操穴 | 男人日女人b视频 | 黑鬼大战白妞高潮喷白浆 | 男人的天堂在线视频 | 夜夜爽av福利精品导航 | 九九九免费 | 国产欧美一区二区三区四区 | 日韩中文字幕免费 | 亚洲乱亚洲乱 | 夜夜骚av一区二区三区 | 福利片在线观看 | 亚洲a图 | 久色成人网 | 三级视频网 |