牛客网多校第5场 F take 【思维+数学期望】
题目:戳这里
思路来源:视频讲解
题意:有n个箱子按1...n标号,每个箱子有大小为di的钻石概率为pi,我们初始有个大小为0的钻石,从1到n按顺序打开箱子,遇到比手中大的箱子就换,求交换次数的数学期望。
解题思路:这题跟上题[点这里]很像,都是找到一个子状态,利用数学期望的可加性,处理求和即可。这里的子状态为每一次交换的状态,即

前j个比i大的概率积用树状数组维护。
附ac代码:
1 #include <cstdio>
2 #include <cstdlib>
3 #include <iostream>
4 #include <cstring>
5 #include <algorithm>
6 #include <cmath>
7 #include <queue>
8 #include <vector>
9 #include <string>
10 #include <map>
11 #include <set>
12 using namespace std;
13 typedef long long ll;
14 const ll mod = 998244353;
15 const int maxn = 1e5 + 10;
16 int n;
17 struct nod
18 {
19 int id;
20 ll d;
21 ll p;
22 }bx[maxn];
23 bool cmp(nod a, nod b)
24 {
25 if(a.d > b.d) return 1;
26 else if(a.d == b.d && a.id < b.id) return 1;
27 return 0;
28 }
29 ll pmul(ll a, ll b)
30 {
31 ll res = 0;
32 while(b)
33 {
34 if(b&1)
35 res = (res + a) % mod;
36 b >>= 1;
37 a = (a + a) % mod;
38 }
39 return res;
40 }
41 ll pmod(ll a, ll b)
42 {
43 ll res = 1;
44 while(b)
45 {
46 if(b&1)
47 res = pmul(res, a) % mod;
48 b >>= 1;
49 a = pmul(a, a) % mod;
50 }
51 return res;
52 }
53 ll exgcd(ll a, ll b, ll &x, ll &y)
54 {
55 if(a == 0 && b == 0) return -1;
56 if(b == 0)
57 {
58 x = 1;y = 0;
59 return a;
60 }
61 ll d = exgcd(b, a % b, y, x);
62 y -= a/b*x;
63 return d;
64 }
65 ll mod_rev(ll a, ll n)
66 {
67 ll x, y;
68 ll d = exgcd(a, n, x, y);
69 if(d == 1) return (x % n + n) % n;
70 else return -1;
71 }
72 int lowbit(int x)
73 {
74 return x&(-x);
75 }
76 ll c[maxn * 4];
77 ll getm(int i)
78 {
79 ll s = 1;
80 while(i > 0)
81 {
82 s = pmul(s , c[i]) % mod;
83 i -= lowbit(i);
84 }
85 return s;
86 }
87 void add(int i, ll val)
88 {
89 while(i <= n)
90 {
91 c[i] = pmul(c[i], val) %mod;
92 i += lowbit(i);
93 }
94 }
95 int main()
96 {
97
98 ll inv = mod_rev(100ll, mod);
99 // printf("%lld\n", inv);
100 scanf("%d", &n);
101 for(int i = 0; i < maxn; ++i)
102 c[i] = 1;
103 for(int i = 1; i <= n; ++i)
104 {
105 scanf("%lld %lld", &bx[i].p, &bx[i].d);
106 bx[i].id = i;
107 }
108 sort(bx + 1, bx + 1 + n, cmp);
109
110 ll ans = 0;
111 for(int i = 1; i <= n; ++i)
112 {
113 // printf("%lld\n", getm(bx[i].id));
114 //printf("%lld %lld %d\n", bx[i].p, bx[i].d, bx[i].id);
115 ans = (ans + getm(bx[i].id) * bx[i].p % mod * inv % mod) % mod;
116 add(bx[i].id, ((100 - bx[i].p) * inv) % mod);
117 }
118 printf("%lld\n", ans);
119 }
牛客网多校第5场 F take 【思维+数学期望】的更多相关文章
- 牛客网多校训练第一场 F - Sum of Maximum(容斥原理 + 拉格朗日插值法)
链接: https://www.nowcoder.com/acm/contest/139/F 题意: 分析: 转载自:http://tokitsukaze.live/2018/07/19/2018ni ...
- 牛客网多校第3场C-shuffle card 平衡树或stl(rope)
链接:https://www.nowcoder.com/acm/contest/141/C 来源:牛客网 题目描述 Eddy likes to play cards game since there ...
- 牛客网多校第3场Esort string (kmp)
链接:https://www.nowcoder.com/acm/contest/141/E 来源:牛客网 题目描述 Eddy likes to play with string which is a ...
- 牛客网多校赛第九场A-circulant matrix【数论】
链接:https://www.nowcoder.com/acm/contest/147/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524 ...
- 牛客网多校训练第二场D Kth Minimum Clique
链接:https://ac.nowcoder.com/acm/contest/882/D来源:牛客网 Given a vertex-weighted graph with N vertices, fi ...
- 牛客网多校第5场 H subseq 【树状数组+离散化】
题目:戳这里 学习博客:戳这里 题意:给n个数为a1~an,找到字典序第k小的序列,输出该序列所有数所在位置. 解题思路:先把所有序列预处理出来,方法是设一个数组为dp,dp[i]表示以i为开头的序列 ...
- 牛客网多校第5场 I vcd 【树状数组+离散化处理】【非原创】
题目:戳这里 学习博客:戳这里 作者:阿狸是狐狸啦 n个点,一个点集S是好的,当且仅当对于他的每个子集T,存在一个右边无限延长的矩形,使的这个矩形包含了T,但是和S-T没有交集. 求有多少个这种集合. ...
- 牛客网多校第4场 J Hash Function 【思维+并查集建边】
题目链接:戳这里 学习博客:戳这里 题意: 有n个空位,给一个数x,如果x%n位数空的,就把x放上去,如果不是空的,就看(x+1)%n是不是空的. 现在给一个已经放过数的状态,求放数字的顺序.(要求字 ...
- 牛客网多校第4场 A.Ternary String 【欧拉降幂】
题目:戳这里 学习博客:戳这里 欧拉函数的性质: ① N是不为0的整数.φ(1)=1(唯一和1互质的数就是1本身) ② 除了N=2,φ(N)都是偶数. ③ 小于N且与N互质的所有数的和是φ(n)*n/ ...
随机推荐
- MySQL全面瓦解18:自定义函数
定义 我们之前学习了MySQL的内置函数,非常丰富,满足了我们对数据操作的大部分需求. 但是如果有一些复杂的业务逻辑在数据库层面就可以完成,无需在程序层面完成的时候,这时候就可以写成MySQL自定义函 ...
- spring boot 集成 websocket 实现消息主动
来源:https://www.cnblogs.com/leigepython/p/11058902.html pom.xml 1 <?xml version="1.0" en ...
- [Usaco2006 Nov]Corn Fields牧场的安排
题目描述 Farmer John新买了一块长方形的牧场,这块牧场被划分成M列N行(1<=M<=12; 1<=N<=12),每一格都是一块正方形的土地.FJ打算在牧场上的某几格土 ...
- JAVA获取当前文件路径this.getClass().getResource方法详细讲解
public class Test { public void run() { // TODO Auto-generated method stub System.out.println(" ...
- 相对论中的光速c不变,这么讲!你总能理解了吧!
今天谈谈相对论的假设基础--光速不变,很多人都知道爱因斯坦的相对论,也知道相对论的理论基础是光速不变,即无论参考哪个参照系,光的速度都是不变的,这个很难得理解的问题.我之前看过别人的理解,也自己思考怎 ...
- 阿里云镜像仓库镜像迁移至私有Harbor
下载镜像同步工具 wget https://goodrain-delivery.oss-cn-hangzhou.aliyuncs.com/boe/image-syncer && chm ...
- jmeter三种阶梯式加压
一.前言 在做性能测试的时候,在某些场景下需要逐渐加压,不总是停下来再修改线程再加压,且可以对比加压,找出服务的性能拐点. 二.三种逐渐加压方式 备注:普通的压测方式,并发的Samples是可预知的: ...
- Go RPC 框架 KiteX 性能优化实践 原创 基础架构团队 字节跳动技术团队 2021-01-18
Go RPC 框架 KiteX 性能优化实践 原创 基础架构团队 字节跳动技术团队 2021-01-18
- Linux网络数据包的揭秘以及常见的调优方式总结
https://mp.weixin.qq.com/s/boRWlx1R7TX0NLuI2sZBfQ 作为业务 SRE,我们所运维的业务,常常以 Linux+TCP/UDP daemon 的形式对外提供 ...
- git database 数据库 平面文件 Git 同其他系统的重要区别 Git 只关心文件数据的整体是否发生变化,而大多数其他系统则只关心文件内容的具体差异 Git 的设计哲学
小结: 1.如果要浏览项目的历史更新摘要,Git 不用跑到外面的服务器上去取数据回来 2.注意 git clone 应指定版本,它复制的这个版本的全部历史信息: 各个分支 git init 数据库 ...