2018牛客网暑假ACM多校训练赛(第五场)F take 树状数组,期望
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round5-F.html
题目传送门 - https://www.nowcoder.com/acm/contest/143/F
题意
有 $n$ 个箱子,第 $i$ 个箱子有 $p_i$ 的概率出现大小为 $d_i$ 的钻石。现在 小A 一开始手里有一个大小为 $0$ 的钻石,他会根据 $i$ 从小到大打开箱子,如果箱子里有钻石且比小 A 手中的大,那么小 A 就会交换手中的钻石和箱子里的钻石。
求期望的交换次数。
$1\leq n\leq 10^5$
题解
我果然好菜啊。
抄了上次 E 题的线段树反而写的恶心了。
考虑期望的线性性,答案相当于 $1\times $ 与每一个钻石交换的概率 之和。
考虑如何求遇到第 $i$ 个钻石并发生交换的概率。
$P_i=p_i\times \prod_\limits{j<i,d_j\geq d_i} (1-p_j)$
很容易理解这个式子,这里不做解释。
于是我们只需要树状数组维护一下这个东西就可以了。
代码
#include <bits/stdc++.h>
using namespace std;
const int N=100005,mod=998244353;
int n,d[N],p[N],Ha[N],hs,c[N],ans=0;
int Pow(int x,int y){
int ans=1;
for (;y;y>>=1,x=1LL*x*x%mod)
if (y&1)
ans=1LL*ans*x%mod;
return ans;
}
void add(int x,int d){
for (x=hs-x+1;x<=hs;x+=x&-x)
c[x]=1LL*c[x]*d%mod;
}
int sum(int x){
int ans=1;
for (x=hs-x+1;x>0;x-=x&-x)
ans=1LL*ans*c[x]%mod;
return ans;
}
int main(){
scanf("%d",&n);
for (int i=1,inv=Pow(100,mod-2);i<=n;i++){
scanf("%d%d",&p[i],&d[i]);
Ha[i]=d[i];
p[i]=1LL*p[i]*inv%mod;
}
sort(Ha+1,Ha+n+1);
hs=unique(Ha+1,Ha+n+1)-Ha-1;
for (int i=1;i<=hs;i++)
c[i]=1;
for (int i=1;i<=n;i++){
d[i]=lower_bound(Ha+1,Ha+hs+1,d[i])-Ha;
ans=(1LL*sum(d[i])*p[i]+ans)%mod;
add(d[i],(1-p[i]+mod)%mod);
}
printf("%d",ans);
return 0;
}
2018牛客网暑假ACM多校训练赛(第五场)F take 树状数组,期望的更多相关文章
- 2018牛客网暑假ACM多校训练赛(第二场)E tree 动态规划
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round2-E.html 题目传送门 - 2018牛客多校赛第二场 E ...
- 2018牛客网暑假ACM多校训练赛(第三场)I Expected Size of Random Convex Hull 计算几何,凸包,其他
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round3-I.html 题目传送门 - 2018牛客多校赛第三场 I ...
- 2018牛客网暑假ACM多校训练赛(第三场)G Coloring Tree 计数,bfs
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round3-G.html 题目传送门 - 2018牛客多校赛第三场 G ...
- 2018牛客网暑假ACM多校训练赛(第三场)D Encrypted String Matching 多项式 FFT
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round3-D.html 题目传送门 - 2018牛客多校赛第三场 D ...
- 2018牛客网暑假ACM多校训练赛(第五场)H subseq 树状数组
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round5-H.html 题目传送门 - https://www.no ...
- 2018牛客网暑假ACM多校训练赛(第四场)E Skyline 线段树 扫描线
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round4-E.html 题目传送门 - https://www.no ...
- 2018牛客网暑假ACM多校训练赛(第十场)H Rikka with Ants 类欧几里德算法
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round10-H.html 题目传送门 - https://www.n ...
- 2018牛客网暑假ACM多校训练赛(第十场)F Rikka with Line Graph 最短路 Floyd
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round10-F.html 题目传送门 - https://www.n ...
- 2018牛客网暑假ACM多校训练赛(第十场)D Rikka with Prefix Sum 组合数学
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round10-D.html 题目传送门 - https://www.n ...
随机推荐
- vmware不能装ghost系统怎么解决
一般情况下一台电脑最好只安装一个系统,因为多系统容易出现问题,所以很多用户都会在Vmware虚拟机上安装其他的系统,为了安装的方便,我们会选择ghost版的系统快速安装,但是有用户遇到vmware虚拟 ...
- Vuex与axios介绍
Vuex集中式状态管理里架构 axios (Ajax) Vuex集中式状态管理架构 -简单介绍: vuex是一个专门为Vue.js设计的集中式状态管理架构. 我们把它理解为在data中需要共享给其他组 ...
- Tp5自定义标签
'taglib_build_in' => 'cx,tags', // 内置标签库名称(标签使用不必指定标签库名称),以逗号分隔 注意解析顺序 <?php namespace thin ...
- python-时间模块,random、os、sys、shutil、json和pickle模块
一.time与datetime模块 time模块: 时间戳:表示的是从1970年1月1日00:00:00开始按秒计算的偏移量,返回类型为float类型 格式化时间字符串(Format String) ...
- 原来商家登录系统的commonjs
/* *适配 */ //orientationchange方向改变事件 (function (doc,win) { var docEl = doc.documentElement,//根元素html ...
- confluence搭建破解及汉化教程
注:本文参考了 < confluence搭建破解及汉化教程 > 本文是在yum环境搭建好,且可用联网的前提下进行的实际操作并作记录的. 关于yum本地环境搭建可以参考此文:<Cen ...
- Confluence 6 属性的一个活动
为了启用属性,使用上面描述的方法.针对所有的用户,属性每一个访问的页面,将会在你的应用服务器中进行记录,直到你对 Confluence 进行重启.请注意每次用户访问一个链接,一个单一的属性将会被打印出 ...
- Confluence 6 删除垃圾内容
属性(profile)垃圾 属性垃圾的定义为,一个垃圾用户在 Confluence 创建了用户,但是这个用户在自己的属性页面中添加了垃圾 URL. 如果你有很多垃圾用户在你的系统中创建了属性,你可以使 ...
- Confluence 6 数据库 JDBC 驱动
本页面提供了支持的数据库的所有 JDBC 驱动下载链接. 基于许可证的原因,我们没有将 MySQL 或 Oracle 的数据库驱动整合到 Confluence 中,因此你需要在 Confluence ...
- nginx官方模块之http_sub_module
作用 http内容替换 语法 示例 html代码与结果如下: