Codeforces 1009E Intercity Travelling | 概率与期望
题目大意:
一个人要从$A$地前往$B$地,两地相距$N$千米,$A$地在第$0$千米处,$B$地在第$N$千米处。
从$A$地开始,每隔$1$千米都有$\dfrac{1}{2}$的概率拥有一个休息点, 如果这个地方有休息点的话,这个人就可以在此地休息,起点处(即第$0$千米处)一定是一个休息点。
如果这个人在最近一次休息后行驶了$i$千米,那么他将有$\sum_{j=1}^ia_i$疲劳值。
给出$N$与$a_i(i$为整数且$i\in[1,N])$,求这个人到达$B$地后拥有的疲劳值的期望,将其与$2^{N-1}$的积模$998244353$后输出。
题解:
设$S_i$为从第$i-1$千米处到达第$i$千米处所产生的疲劳值的期望。
考虑计算每个$S_i$,最后的答案即为$2^{n-1}\cdot\sum_{i=1}^NS_i\bmod998244353$。
很明显的一点是,与$S_i$有关的即为到达第$i$千米处前最后一次休息的地方是哪里。
对此,就会用$i-1$种可能的情况,
分别是最后一次休息的地方在第$0$千米处,在第$1$千米处,在第$2$千米处……在第$i-1$千米处;
这些情况的概率分别是$\dfrac{1}{2^{i-1}}$,$\dfrac{1}{2^{i-1}}$,$\dfrac{1}{2^{i-2}}$$\cdots$$\dfrac{1}{2^1}$;
在这些情况中,从第$i-1$千米处到达第$i$千米处所产生的疲劳值分别是$a_i$,$a_{i-1}$,$a_{i-2}$$\cdots$$a_1$。
注意:最后一次休息的地方在第$0$千米处的概率是$\dfrac{1}{2^{i-1}}$而不是$\dfrac{1}{2^i}$是因为第$0$千米处一定是一个休息点。
于是就有$S_i=\dfrac{a_i}{2^{i-1}}+\dfrac{a_{i-1}}{2^{i-1}}+\dfrac{a_{i-2}}{2^{i-2}}+\cdots+\dfrac{a_1}{2^1}$。
那么对于$S_{i+1}$,就有$S_{i+1}=S_i-\dfrac{a_i}{2^i}+\dfrac{a_{i+1}}{2^i}$。
然后,就可以在$O(n)$的时间内递推求出所有的$S_i$了。
初始条件?显然有$S_1=a_1$。
计算的时候不要忘记与$2^{N-1}$相乘以及取模。
代码:
- #include<iostream>
- #include<cstdio>
- using namespace std;
- const long long mod=998244353;
- long long a[1000005],f[1000005],mi[1000005];
- int main()
- {
- int n=0;
- scanf("%d",&n);
- for(int i=1;i<=n;i++) scanf("%I64d",&a[i]);
- mi[0]=1;
- for(int i=1;i<=n-1;i++) mi[i]=mi[i-1]*2%mod;//预处理出2的i次方
- f[1]=mi[n-1-0]*a[1]%mod;//初始条件
- long long ans=0;
- for(int i=1;i<=n-1;i++)
- {
- ans=(ans+f[i])%mod;//累加答案
- f[i+1]=((f[i]-mi[n-1-i]*a[i]%mod+mod)%mod+mi[n-1-i]*a[i+1]%mod)%mod;//递推
- }
- ans=(ans+f[n])%mod;//不要忘记加上最后这一项
- printf("%I64d",ans);
- return 0;
- }
参考资料:
PikMike's blog —— Разбор Educational Codeforces Round 47
Codeforces 1009E Intercity Travelling | 概率与期望的更多相关文章
- 1009E Intercity Travelling 【数学期望】
题目:戳这里 题意:从0走到n,难度分别为a1~an,可以在任何地方休息,每次休息难度将重置为a1开始.求总难度的数学期望. 解题思路: 跟这题很像,利用期望的可加性,我们分析每个位置的状态,不管怎么 ...
- CodeForces - 1009E Intercity Travelling
题面在这里! 可以发现全是求和,直接拆开算贡献就好了 #include<bits/stdc++.h> #define ll long long using namespace std; c ...
- Codeforces D. Intercity Travelling(区间组合)
题目描述: D. Intercity Travelling time limit per test 1.5 seconds memory limit per test 256 megabytes in ...
- CodeForces - 28C Bath Queue 概率与期望
我概率期望真是垃圾--,这题搞了两个钟头-- 题意 有\(n\)个人,\(m\)个浴室,每个浴室里有\(a_i\)个浴缸.每个人会等概率随机选择一个浴室,然后每个浴室中尽量平分到每个浴缸.问期望最长排 ...
- Codeforces 1009 E. Intercity Travelling(计数)
1009 E. Intercity Travelling 题意:一段路n个点,走i千米有对应的a[i]疲劳值.但是可以选择在除终点外的其余n-1个点休息,则下一个点开始,疲劳值从a[1]开始累加.休息 ...
- 【CodeForces】913 F. Strongly Connected Tournament 概率和期望DP
[题目]F. Strongly Connected Tournament [题意]给定n个点(游戏者),每轮游戏进行下列操作: 1.每对游戏者i和j(i<j)进行一场游戏,有p的概率i赢j(反之 ...
- 【算法学习笔记】概率与期望DP
本文学习自 Sengxian 学长的博客 之前也在CF上写了一些概率DP的题并做过总结 建议阅读完本文再去接着阅读这篇文章:Here 前言 单纯只用到概率的题并不是很多,从现有的 OI/ACM 比赛中 ...
- 【BZOJ-3450】Tyvj1952Easy 概率与期望DP
3450: Tyvj1952 Easy Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 468 Solved: 353[Submit][Status] ...
- 【BZOJ-4008】亚瑟王 概率与期望 + DP
4008: [HNOI2015]亚瑟王 Time Limit: 20 Sec Memory Limit: 512 MBSec Special JudgeSubmit: 832 Solved: 5 ...
随机推荐
- 超详细的VMware安装Centos7教程
下载centos镜像 https://wiki.centos.org/Download 注:真正生产环境的oracle数据库一般是一整台服务器只用作数据库,不会安装其他应用,也不会安装xwindow图 ...
- javascript 对象池
* 一个对象池的简单应用 tool tip tootip.html <html> <head> <meta charset="UTF-8"> & ...
- django url配置-反向解析-视图函数-HttpRequest对象-HttpResponse对象-cookies-session-redis缓存session
""" --视图概述:-- 作用:视图接受WEB请求,并响应WEB请求 本质:视图就是一个python中的函数 响应: 1.网页: 一.重定向 二.错误视图 400,50 ...
- 华为云计算IE面试笔记-云磁盘和普通磁盘的区别。
1. 定义 云硬盘:一种虚拟块存储服务,主要为ECS和BMS提供块存储空间 普通磁盘:也称本地硬盘,指挂载在计算实例物理机上的本地硬盘 2. 性能 吞吐量具体情况具体分析.(若云磁盘用的SSD本地磁盘 ...
- 生动直观的Gif图告诉你如何安装Python安装第3方库,在线安装离线安装全都搞定
前言 学Python的小伙伴都知道,Python学习过程中需要装不少的第3方的库,今天就和大家一起分享下第3方库的安装方法 在线安装(推荐安装式式) 点开Pycharm--file--Project- ...
- 让前端的下拉框支持单选、多选及全选,后台MyBaits解决方案
目录 一.解决思路 二.请求参数 三.后台相关代码 四.Mybatis注意要点 一.解决思路 让前端的下拉框支持单选.多选及全选,后台让Mybatis使用** trim **标签拼接动态SQL,实 ...
- HTML对溢出的控制:overflow
用于对超出模块的内容进行控制 overflow的三种参数 1.visible(默认):溢出部分可见 2.hidden:溢出部分隐藏 3.auto:适当加入滚动条 overflow使用方法 1.常用 o ...
- 前端VUE基于gitlab的CI_CD
目录 CI 1.Gitlab的CI 1.1 GitLab-Runner 1.2 .gitlab-ci.yml 1.3 配置.gitlab-ci.yml 1.3.1 Pipeline概念 1.3.2 S ...
- 左手IRR,右手NPV,掌握发家致富道路密码
智能手机的普及让世界成为了我们指尖下的方寸之地. 在各种信息爆炸出现的同时,五花八门的理财信息与我们的生活越贴越近.投资不再仅仅是企业行为,对于个人而言,也是很值得关注的内容. 但是落脚到很小的例子之 ...
- Java基础之(十一):方法
Java方法详解 何谓方法(了解) System.out.println() // 类 对象 方法 方法是语句的集合,它们在一起执行一个功能. 方法是解决一类问题的步骤的有序集合 方法包含于类或对象中 ...