题目:戳这里

题意:鼠标点击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. 记录Js动态加载页面.append、html、appendChild、repend添加元素节点不生效以及解决办法

    今天再优化blog页面的时候添加了个关注按钮和图片,但是页面上这个按钮和图片时有时无,本来是搞后端的,被这个前端的小问题搞得抓耳挠腮的! 网上各种查询解决方案,把我解决问题的艰辛历程分享出来,希望大家 ...

  2. mysql查看修改参数

    1.查看参数 show variables like '%timeout%'; 2.修改参数 会话级别修改: set session innodb_lock_wait_timeout=50; 对当前会 ...

  3. Linux下nginx的安装以及环境配置

    参考链接 https://blog.csdn.net/qq_42815754/article/details/82980326 环境: centos7 .nginx-1.9.14 1.下载 并解压  ...

  4. ELK一个优秀的日志收集、搜索、分析的解决方案

    1 什么是ELK? ELK,是Elastaicsearch.Logstash和Kibana三款软件的简称.Elastaicsearch是一个开源的全文搜索引擎.Logstash则是一个开源的数据收集引 ...

  5. 深圳某小公司面试题:AQS是什么?公平锁和非公平锁?ReentrantLock?

    AQS总体来说没有想象中那么难,只要了解它的实现框架,那理解起来就不是什么问题了. AQS在Java还是占很重要的地位的,面试也是经常会问. 目前已经连载11篇啦!进度是一周更新两篇,欢迎持续关注 [ ...

  6. E2.在shell中正确退出当前表达式

    E2.在shell中正确退出当前表达式 优雅退出当前表达式 在shell里面输出复杂的多行表达时,经常由于少输入一个引号,一直无法退出当前的表达式求值,也没有办法终止它,以前只能通过两次Ctrl+C结 ...

  7. C++旋转数组(三种解法详解)

    题目描述 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数. 附加要求 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题. 你可以使用空间复杂度为 O(1) 的 原地 ...

  8. JVM调优 jdk版本 机器配置 建议jvm参数 备注

    https://juejin.im/post/5b091ee35188253892389683 大型跨境电商JVM调优经历 前提:某大型跨境电商业务发展非常快,线上机器扩容也很频繁,但是对于线上机器的 ...

  9. C # 9.0的record

    官方消息: c # 9.0已经过时了!早在五月份,我就在博客中介绍了 c # 9.0计划,下面是该文章的更新版本,以便与我们最终发布的计划相匹配. 对于每一个新的 c # 版本,我们都在努力提高常见编 ...

  10. git本地检出远程分支

    场景:本地分支被误物理删除,想要重新将自己的分支代码从远程拉取下来.(此时取的是最后一次git push上去的分支代码) 1.与远程仓库重新建立关系 1 git clone git@gitlab.名称 ...