原题链接

题意

  • 给我们一个长为n的序列,要求我们从头开始向右走n个节点,每个位置都有1 / 2的概率将我们传送回1号点之前,不过我们只需要完成走n步的任务就可以了。求我们走过的元素和 乘以 2的n - 1次方的期望。

思路

  • 重点主要是将题意翻译为上面的“传送回一号元素之前”,这样我们就可以从1号位置考虑。

  • 我们定义 \(F[i]\) 为“已经走了i步,走完剩下的步数,获得的元素和乘以2的n - i - 1次方的期望”,也就是原问题的一个子问题

  • 然后我们可以想到初始状态

\[F[n] = 0, F[n - 1] = a_1
\]
  • 然后继续推可知
\[F[n - 2] = a_1 + F[n - 1] + (a_1 + a_2)\\
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[i] = \sum_{i + 1}^{n - 1}F[j] + \sum_{j = 1}^{n - i - 1}{2^{n - i - 1 - j} * \sum_{k = 1}^{j}{a_k}} + \sum_{j = 1}^{n - i}{a_j}
\]
  • 用三个变量分别维护一下这三个值同时记得取模即可,答案为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的更多相关文章

  1. Codeforces 1009E Intercity Travelling | 概率与期望

    题目链接 题目大意: 一个人要从$A$地前往$B$地,两地相距$N$千米,$A$地在第$0$千米处,$B$地在第$N$千米处. 从$A$地开始,每隔$1$千米都有$\dfrac{1}{2}$的概率拥有 ...

  2. CodeForces - 1009E Intercity Travelling

    题面在这里! 可以发现全是求和,直接拆开算贡献就好了 #include<bits/stdc++.h> #define ll long long using namespace std; c ...

  3. Codeforces D. Intercity Travelling(区间组合)

    题目描述: D. Intercity Travelling time limit per test 1.5 seconds memory limit per test 256 megabytes in ...

  4. BZOJ 3270 博物馆 && CodeForces 113D. Museum 期望概率dp 高斯消元

    大前提,把两个点的组合看成一种状态 x 两种思路 O(n^7) f[x]表示在某一个点的前提下,这个状态经过那个点的概率,用相邻的点转移状态,高斯一波就好了 O(n^6) 想象成臭气弹,这个和那个的区 ...

  5. 1009E Intercity Travelling 【数学期望】

    题目:戳这里 题意:从0走到n,难度分别为a1~an,可以在任何地方休息,每次休息难度将重置为a1开始.求总难度的数学期望. 解题思路: 跟这题很像,利用期望的可加性,我们分析每个位置的状态,不管怎么 ...

  6. Codeforces #548 (Div2) - D.Steps to One(概率dp+数论)

    Problem   Codeforces #548 (Div2) - D.Steps to One Time Limit: 2000 mSec Problem Description Input Th ...

  7. Codeforces 148D 一袋老鼠 Bag of mice | 概率DP 水题

    除非特别忙,我接下来会尽可能翻译我做的每道CF题的题面! Codeforces 148D 一袋老鼠 Bag of mice | 概率DP 水题 题面 胡小兔和司公子都认为对方是垃圾. 为了决出谁才是垃 ...

  8. 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 ...

  9. codeforces 768 D. Jon and Orbs(概率dp)

    题目链接:http://codeforces.com/contest/768/problem/D 题意:一共有k种球,要得到k种不同的球至少一个,q个提问每次提问给出一个数pi,问概率大小大于等于pi ...

  10. Codeforces 1009 E. Intercity Travelling(计数)

    1009 E. Intercity Travelling 题意:一段路n个点,走i千米有对应的a[i]疲劳值.但是可以选择在除终点外的其余n-1个点休息,则下一个点开始,疲劳值从a[1]开始累加.休息 ...

随机推荐

  1. 时髦称呼:SQL递归"语法糖"的用法

    Oracle函数sys_connect_by_path 详解 语法:Oracle函数:sys_connect_by_path 主要用于树查询(层次查询) 以及 多列转行.其语法一般为:       s ...

  2. 垃圾000000000000000000000写了很多,保存不上,发送失败了。。。。。A

    垃圾000000000000000000000写了很多,保存不上,发送失败了.....A垃圾000000000000000000000写了很多,保存不上,发送失败了.....A垃圾0000000000 ...

  3. 【RocketMQ】RocketMQ存储结构设计

    CommitLog 生产者向Broker发送的消息,会以顺序写的方式,写入CommitLog文件,CommitLog文件的根目录由配置参数storePathRootDir决定,默认每一个CommitL ...

  4. 洛谷P1144

    最短路计数 题目描述 给出一个 \(N\) 个顶点 \(M\) 条边的无向无权图,顶点编号为 \(1\sim N\).问从顶点 \(1\) 开始,到其他每个点的最短路有几条. 输入格式 第一行包含 \ ...

  5. Nacos注册中心有几种调用方式?

    Spring Cloud Alibaba Nacos 作为近几年最热门的注册中心和配置中心,也被国内无数公司所使用,今天我们就来看下 Nacos 作为注册中心时,调用它的接口有几种方式? 1.什么是注 ...

  6. 为什么idea建议使用“+”拼接字符串

    前言 各位小伙伴在字符串拼接时应该都见过下面这种提示: 内容翻译:报告StringBuffer.StringBuilder或StringJoiner的任何用法,这些用法可以用单个java.lang.S ...

  7. 随着Web3.0的到来,IPFS能否成为未来?

    IPFS能否成为未来互联网存储市场的霸主? 首先在说IPFS之前,我们有必要先聊一聊HTTP,因为目前我们从互联网上看到的,用的,基本上都是HTTP,自从1991年发明了HTTP,到现在已经多了30多 ...

  8. L2-031 深入虎穴

    并没有说根是谁 #include <bits/stdc++.h> using namespace std; using pii = pair<int, int>; const ...

  9. vue 组件之间的自定义方法互相调用

    1,先定义一个中间通信文件js globalBus.js import Vue from 'vue'; export const globalBus = new Vue(); 2,A.vue组件的方法 ...

  10. 用友vs金蝶产品分析(云星空与YonSuite)

    产品定位 用友与金蝶二者面对的客户群体是相同的:都是为成长型企业提供一体化服务,由于金蝶云星空发展较早,在部分产品功能上具备一定的先发优势:在产品的架构上,由于YS采用目前最先进的云原生和微服务架构, ...