CodeForces 1009E Intercity Travelling 概率DP
题意
- 给我们一个长为n的序列,要求我们从头开始向右走n个节点,每个位置都有1 / 2的概率将我们传送回1号点之前,不过我们只需要完成走n步的任务就可以了。求我们走过的元素和 乘以 2的n - 1次方的期望。
思路
重点主要是将题意翻译为上面的“传送回一号元素之前”,这样我们就可以从1号位置考虑。
我们定义 \(F[i]\) 为“已经走了i步,走完剩下的步数,获得的元素和乘以2的n - i - 1次方的期望”,也就是原问题的一个子问题
然后我们可以想到初始状态
\]
- 然后继续推可知
F[n - 3] = a_1 * 2 + F[n - 2] + (a_1 + a_2) + F[n - 1] + (a_1 + a_2 + a_3)\\
F[n - 4] = a_1 * 4 + F[n - 3] + (a_1 + a_2) * 2 + F[n - 2] + (a_1 + a_2 + a_3) + F[n - 1] + (a_1 + a_2 + a_3 + a_4)
\]
- 然后可以得到递推公式
\]
用三个变量分别维护一下这三个值同时记得取模即可,答案为F[0]。
当然这个递推公式并不是试出来的,而是考虑了对于i状态下的所有子问题的结果。
AC代码
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const long long modd = 998244353;
int n;
long long ssu;
long long su[1000005];
long long ff[1000005];
int main()
{
scanf("%d", &n);
ssu = 0;
su[0] = 0;
for (int i = 1; i <= n; ++i)
{
long long xx;
scanf("%lld", &xx);
su[i] = (su[i - 1] % modd + xx % modd) % modd;
}
ff[n] = 0;
ssu = 0;
long long sf = 0;
for (int i = n - 1; i >= 0; --i)
{
ff[i] = (su[n - i] % modd + ssu % modd + sf % modd) % modd;
ssu = (ssu * 2 % modd + su[n - i] % modd) % modd;
sf = (sf + ff[i]) % modd;;
}
printf("%lld\n", ff[0]);;
return 0;
}
CodeForces 1009E Intercity Travelling 概率DP的更多相关文章
- Codeforces 1009E Intercity Travelling | 概率与期望
题目链接 题目大意: 一个人要从$A$地前往$B$地,两地相距$N$千米,$A$地在第$0$千米处,$B$地在第$N$千米处. 从$A$地开始,每隔$1$千米都有$\dfrac{1}{2}$的概率拥有 ...
- 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 ...
- BZOJ 3270 博物馆 && CodeForces 113D. Museum 期望概率dp 高斯消元
大前提,把两个点的组合看成一种状态 x 两种思路 O(n^7) f[x]表示在某一个点的前提下,这个状态经过那个点的概率,用相邻的点转移状态,高斯一波就好了 O(n^6) 想象成臭气弹,这个和那个的区 ...
- 1009E Intercity Travelling 【数学期望】
题目:戳这里 题意:从0走到n,难度分别为a1~an,可以在任何地方休息,每次休息难度将重置为a1开始.求总难度的数学期望. 解题思路: 跟这题很像,利用期望的可加性,我们分析每个位置的状态,不管怎么 ...
- Codeforces #548 (Div2) - D.Steps to One(概率dp+数论)
Problem Codeforces #548 (Div2) - D.Steps to One Time Limit: 2000 mSec Problem Description Input Th ...
- Codeforces 148D 一袋老鼠 Bag of mice | 概率DP 水题
除非特别忙,我接下来会尽可能翻译我做的每道CF题的题面! Codeforces 148D 一袋老鼠 Bag of mice | 概率DP 水题 题面 胡小兔和司公子都认为对方是垃圾. 为了决出谁才是垃 ...
- Codeforces Round #301 (Div. 2) D. Bad Luck Island 概率DP
D. Bad Luck Island Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/540/pr ...
- codeforces 768 D. Jon and Orbs(概率dp)
题目链接:http://codeforces.com/contest/768/problem/D 题意:一共有k种球,要得到k种不同的球至少一个,q个提问每次提问给出一个数pi,问概率大小大于等于pi ...
- Codeforces 1009 E. Intercity Travelling(计数)
1009 E. Intercity Travelling 题意:一段路n个点,走i千米有对应的a[i]疲劳值.但是可以选择在除终点外的其余n-1个点休息,则下一个点开始,疲劳值从a[1]开始累加.休息 ...
随机推荐
- LVS+keepalived配置高可用架构和负载均衡机制(2)
一.概述 接上文,实际生产场景中,往往存在硬件资源数量的限制,此时需要设置DS节点复用RS节点. 所以往往最常见的架构如下图所示: 3台主机组建真实服务器集群,即3个RS 2个RS兼做DS,构建负载均 ...
- 漫谈C#的定时执行程序
1.写法1 task的lambda表达式 #region 写法1 task的lambda表达式 //static void Main() //{ // // 创建并启动两个任务 // Task tas ...
- Intervals 题解
Intervals 题目大意 给定 \(m\) 条形如 \((l_i,r_i,a_i)\) 的规则,你需要求出一个长为 \(n\) 的分数最大的 01 串的分数,其中一个 01 串 \(A\) 的分数 ...
- 【matplotlib 实战】--热力图
热力图,是一种通过对色块着色来显示数据的统计图表.它通过使用颜色编码来表示数据的值,并在二维平面上呈现出来.热力图通常用于显示大量数据点的密度.热点区域和趋势. 绘图时,一般较大的值由较深的颜色表示, ...
- 利用Zip.js压缩并上传文件,后端使用.Net(Winform)接收转存
没时间解释了,快上车... 前端js: upload=function () { if(window.FormData) { var fileslist=$("input[type='fil ...
- idea的git插件,可以显示每一行代码的git版本记录,很好用
再给大家推荐一款idea的git插件----GitToolBox,可以显示每一行代码的git版本记录,很好用 效果图如下 可以在光标所在行代码的后面显示git的版本记录信息(提交的用户名,提交的时间等 ...
- 在Window系统中安装VMware虚拟机搭建Linux服务器
1.什么是VMware Workstation VMware Workstation Pro是一款桌面虚拟化软件.我们可以通过Workstation Pro在Windows或Linux PC上运行多个 ...
- GitHub Universe 2023:AI 技术引领软件开发创新浪潮
GitHub 是全球领先的软件开发和协作平台,数百万开发者和企业在此分享.学习和创建卓越的软件.同时 GitHub 处在 AI 技术前沿,通过其先进的 AI 技术增强开发者体验并赋能未来软件开发的使命 ...
- base64编码的学习
base64编码是什么 Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法. Base64编码本质上是一种将二进制数据转成 ...
- 有什么巨好用Excel数据分析技巧?
当涉及Excel数据分析时,以下是一些非常实用的技巧和功能,供您参考.这里将为您提供关于数据整理.数据清洗.统计分析.可视化和高级分析等方面的技巧. 一.数据整理与清洗: 导入数据:使用 Excel ...