题目:戳这里

题意:鼠标点击n下,第i次点击成功的概率为p[i],连续点击成功x次可以获得x^m分,求n次点击总分数的数学期望。

解题思路:数学期望的题很多都需要转化思维,求某一个单独状态对整体答案的贡献。这主要是利用了期望的可加性。

即:E(X+Y)=E(X)+E(Y);

比如在这题中,第2到3次连续点击成功,则意味着状态为0110....,后面的(...)所有情况概率和为1,也就是说影响第2到3次点击成功的因素只有前四次点击。

这样我们就可以预处理出所有段对答案的贡献,最后遍历一遍求和即可。

附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 = 1e9 + 7;
15 const int maxn = 1e3 + 10;
16 ll p[maxn];
17 ll sc[maxn];
18 ll pre[maxn][maxn];
19 ll pmul(ll a, ll b)
20 {
21 ll res = 0;
22 while(b)
23 {
24 if(b&1)
25 res = (res + a) % mod;
26 b >>= 1;
27 a = (a + a) % mod;
28 }
29 return res;
30 }
31 ll pmod(ll a, ll b)
32 {
33 ll res = 1;
34 while(b)
35 {
36 if(b&1)
37 res = pmul(res, a) % mod;
38 b >>= 1;
39 a = pmul(a, a) % mod;
40 }
41 return res;
42 }
43 ll exgcd(ll a, ll b, ll &x, ll &y)
44 {
45 if(a == 0 && b == 0) return -1;
46 if(b == 0)
47 {
48 x = 1;y = 0;
49 return a;
50 }
51 ll d = exgcd(b, a % b, y, x);
52 y -= a/b*x;
53 return d;
54 }
55 ll mod_rev(ll a, ll n)
56 {
57 ll x, y;
58 ll d = exgcd(a, n, x, y);
59 if(d == 1) return (x % n + n) % n;
60 else return -1;
61 }
62 int main()
63 {
64 ll n, m;
65 ll inv = mod_rev(100ll, mod);
66 // printf("%lld\n", inv);
67 scanf("%lld %lld", &n, &m);
68 for(ll i = 1; i <= n; ++i)
69 {
70 scanf("%lld", &p[i]);
71 sc[i] = pmod(i, m) % mod;
72 // printf("%lld sc\n", sc[i]);
73 }
74 for(ll i = 1; i <= n; ++i)//预处理每一段的贡献
75 {
76 pre[i][i] = p[i] * inv % mod;
77 for(ll j = i + 1; j <= n; ++j)
78 {
79 pre[i][j] = pre[i][j - 1] * p[j] % mod * inv % mod;
80 }
81 }
82 ll ans = 0;
83 for(ll i = 0; i < n; ++i)//遍历求贡献和
84 {
85 for(ll j = i + 2; j <= n + 1; ++j)
86 {
87 ans += pre[i + 1][j - 1] * sc[j - i - 1] % mod * (100ll - p[i]) % mod * inv % mod * (100ll - p[j]) % mod * inv % mod;
88 ans %= mod;
89 }
90 }
91 printf("%lld\n", ans % mod);
92
93 }

牛客网多校第9场 E Music Game 【思维+数学期望】的更多相关文章

  1. 牛客网多校第5场 F take 【思维+数学期望】

    题目:戳这里 思路来源:视频讲解 题意:有n个箱子按1...n标号,每个箱子有大小为di的钻石概率为pi,我们初始有个大小为0的钻石,从1到n按顺序打开箱子,遇到比手中大的箱子就换,求交换次数的数学期 ...

  2. 牛客网多校第3场C-shuffle card 平衡树或stl(rope)

    链接:https://www.nowcoder.com/acm/contest/141/C 来源:牛客网 题目描述 Eddy likes to play cards game since there ...

  3. 牛客网多校第3场Esort string (kmp)

    链接:https://www.nowcoder.com/acm/contest/141/E 来源:牛客网 题目描述 Eddy likes to play with string which is a ...

  4. 牛客网多校赛第九场A-circulant matrix【数论】

    链接:https://www.nowcoder.com/acm/contest/147/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524 ...

  5. 牛客网多校训练第二场D Kth Minimum Clique

    链接:https://ac.nowcoder.com/acm/contest/882/D来源:牛客网 Given a vertex-weighted graph with N vertices, fi ...

  6. 牛客网多校第5场 H subseq 【树状数组+离散化】

    题目:戳这里 学习博客:戳这里 题意:给n个数为a1~an,找到字典序第k小的序列,输出该序列所有数所在位置. 解题思路:先把所有序列预处理出来,方法是设一个数组为dp,dp[i]表示以i为开头的序列 ...

  7. 牛客网多校第5场 I vcd 【树状数组+离散化处理】【非原创】

    题目:戳这里 学习博客:戳这里 作者:阿狸是狐狸啦 n个点,一个点集S是好的,当且仅当对于他的每个子集T,存在一个右边无限延长的矩形,使的这个矩形包含了T,但是和S-T没有交集. 求有多少个这种集合. ...

  8. 牛客网多校第4场 J Hash Function 【思维+并查集建边】

    题目链接:戳这里 学习博客:戳这里 题意: 有n个空位,给一个数x,如果x%n位数空的,就把x放上去,如果不是空的,就看(x+1)%n是不是空的. 现在给一个已经放过数的状态,求放数字的顺序.(要求字 ...

  9. 牛客网多校第4场 A.Ternary String 【欧拉降幂】

    题目:戳这里 学习博客:戳这里 欧拉函数的性质: ① N是不为0的整数.φ(1)=1(唯一和1互质的数就是1本身) ② 除了N=2,φ(N)都是偶数. ③ 小于N且与N互质的所有数的和是φ(n)*n/ ...

  10. 牛客网多校训练第一场 J - Different Integers(树状数组 + 问题转换)

    链接: https://www.nowcoder.com/acm/contest/139/J 题意: 给出n个整数的序列a(1≤ai≤n)和q个询问(1≤n,q≤1e5),每个询问包含两个整数L和R( ...

随机推荐

  1. KeepAlive安装以及简单配置

    操作系统:Centos7.3 一.依赖安装 首先安装相关依赖: yum install -y gcc openssl-devel popt-devel yum -y install libnl lib ...

  2. 处理Promise.reject()

    一般处理Promise.reject()都是catch住错误,然后进行错误处理,一般都是再次发起请求或者直接打印. 直接打印的情况用console.error()就可以了,而再次发起请求呢? 最好是先 ...

  3. 1、进程管理常用命令和进程ID

    常用命令 1. ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器. 详细介绍参照:https://www.runoob.com/linu ...

  4. centos7服务器远程安装图形化页面

    以下是我用云的centos 7.4的安装步骤,照着我的命令操作肯定OK的,其他的就不敢保证了... 1.首先安装X(X Window System),命令为:(注意有引号) yum groupinst ...

  5. 记一次Nginx反向代理500的排查记录

    今天公司项目遇到一个奇怪的问题,记录一下. 注: 数据已经过脱敏处理,未暴露公司具体的IP等数据. TLDR; 项目简单介绍 用 Vue + ElementUI 实现的后台项目(以下简称:a-proj ...

  6. Beating JSON performance with Protobuf https://auth0.com/blog/beating-json-performance-with-protobuf/

    Beating JSON performance with Protobuf https://auth0.com/blog/beating-json-performance-with-protobuf ...

  7. dotnet .NET

    小结: 1.一个.NET应用是一个使用.NET Framework类库来编写,并运行于公共语言运行时Common Language Runtime之上的应用程序.       Microsoft .N ...

  8. CF1416D 做题心得

    CF1416D 做题心得 上次在某trick中提到了这个题,一开始觉得太毒瘤没有写,现在把它补上了. 感觉实现这个东西,比单纯收获一个trick,收获的东西多太多了. 主要思路 它的主要trick是& ...

  9. C#Process调用外部程序

    前言 使用C#调用外部程序,一种是通过Process类,一种是通过命令行,本文主要说一下使用C#中的Process类调用外部程序的方式. 过程: 1. 创建Process对象 2. 配置启动选项(输入 ...

  10. Language Guide (proto3) | proto3 语言指南(八)未知字段和任意类型

    未知字段和任意类型篇幅较少,因此将他们合并到本文进行描述. Unknown Fields - 未知字段 未知字段是格式良好的协议缓冲区序列化数据,表示解析器无法识别的字段.例如,当一个旧二进制代码解析 ...