洛谷P8208 [THUPC2022 初赛] 骰子旅行 题解 期望DP

news/2025/1/15 14:10:39/文章来源:https://www.cnblogs.com/quanjun/p/18412003

题目链接:https://www.luogu.com.cn/problem/P8208

解题思路:

定义 \(d_u\) 表示节点 \(u\) 的出度,定义 \(V_u\) 表示节点 \(u\) 一步能够走到的节点的集合。

定义状态 \(p_{u, c, v}\) 表示从节点 \(u\) 出发走恰好 \(c\) 步的情况下,至少经过一次节点 \(v\) 的概率。

则:

  • \(v = u\),则 \(p_{u, c, v} = 1\)
  • 否则,若 \(c = 0\),则 \(p_{u, c, v} = 0\)
  • 否则,\(p_{u, c, v} = \frac{1}{d_u} \sum\limits_{x \in V_u} p(x, c-1, v)\)

定义 \(f_{u, c}\) 表示从节点 \(u\) 开始走恰好 \(c\) 步,废话指数的期望值,则:

  • \(c = 0\),则 \(f_{u, 0} = 0\)
  • 否则,\(f(u, c) = \frac{1}{d_u} \sum\limits_{v \in V_u} f(v, c-1) + v \times p(v, c-1, u)\)

注:这道题目的意思有点绕 如果是从 \(u\) 先走到 \(v\),然后再绕回 \(u\),则额外增加的代价是 \(v\),而不是 \(u\)。所以会看见,上式中额外增加的代价是 \(v\) 而不是 \(u\)。即标下划线的部分:

\[f(u, c) = \frac{1}{d_u} \sum\limits_{v \in V_u} f(v, c-1) + \underline{v} \times p(v, c-1, u) \]

这里是 \(v\) 不是 \(u\)

示例程序:

#include <bits/stdc++.h>
using namespace std;
const long long mod = 998244353;
typedef long long ll;
void gcd(ll a , ll b , ll &d , ll &x , ll &y) {if(!b) {d = a; x = 1; y = 0;}else { gcd(b , a%b,d,y , x); y -= x * (a/b); }
}
ll inv(ll a , ll n = mod) {ll d , x , y;gcd(a , n , d,  x , y);return d == 1 ? (x+n)%n : -1;
}ll p[105][105][105], f[105][105], d[105];
bool visp[105][105][105], visf[105][105];
vector<int> g[105];
int n, s, T;ll dfsp(int u, int c, int v) {if (v == u) return 1;if (c == 0) return 0;if (visp[u][c][v])return p[u][c][v];visp[u][c][v] = true;ll res = 0;for (auto x : g[u])res += dfsp(x, c-1, v),res %= mod;res = res * inv(d[u]) % mod;return p[u][c][v] = res;
}ll dfsf(int u, int c) {if (c == 0) return 0;if (visf[u][c])return f[u][c];visf[u][c] = true;ll res = 0;for (auto v : g[u])res += dfsf(v, c-1) + v * dfsp(v, c-1, u) % mod,res %= mod;res = res * inv(d[u]) % mod;return f[u][c] = res;
}int main() {cin >> n >> s >> T;for (int u = 1; u <= n; u++) {cin >> d[u];for (int j = 0; j < d[u]; j++) {int v;cin >> v;g[u].push_back(v);}}cout << dfsf(s, T) << endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/796502.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[NLP/AIGC/GPT] RAG : 检索增强型生成技术,智能体的外挂知识库

1 概述 : RAG RAG 技术的概念、起源 大家每天都会看到各种 RAG 框架、论文和开源项目,也都知道 RAG (Retrieval-Augmented Generation) 是检索增强型生成。 但大家还记得 RAG 这个概念源自哪里吗? RAG 概念来自 Facebook AI Research在 2020 年的一篇论文:《** Retrieval-Au…

调研记录

最近做了一批调研,记录照片如下。

ArgoWorkflow教程(四)---Workflow 日志归档

上一篇我们分析了argo-workflow 中的 artifact,包括 artifact-repository 配置以及 Workflow 中如何使用 artifact。本篇主要分析流水线 GC 以及归档,防止无限占用集群中 etcd 的空间。1. 概述 因为 ArgoWorkflow 是用 CRD 方式实现的,不需要外部存储服务也可以正常运行:运行…

相对论:浅析可重构计算立足点

捏他下相对论~可重构计算和时空域概念高度关联,而相对论也是探讨时空域之间的关联关系“FPGA vs ASIC,孰强孰弱?” 这是在我心中埋藏很久的一个疑问。因为听到有言论说在 DNN 上,FPGA 被 ASIC 完爆,能耗和面积都不占优势;而又听到 FPGA 在其他比如量化领域仍有重要的应用…

jenkins远程启动任务--启用远程触发构建

一:前言 在执行Jenkins的项目构建的时候,一般都是通过web管理界面中的”构建”来执行项目构建操作,但是除此之外我们还可以通过项目配置中的”构建触发器”来触发构建操作,其中”构建触发器”有一种方式是通过配置令牌远程触发项目构建。二:设置用户token 打开当前登录用户…

2024年9月中国数据库流行度排行榜:TiDB重回前三,GoldenDB问鼎前五

9月墨天轮排行榜解读新鲜出炉!本月榜单前五变动较大,TiDB时隔半年重归第三,GoldenDB再次攀升跻身第五,此外亦有部分产品表现不俗,一起来看更多排名情况与解读!9月墨天轮数据社区的中国数据库流行度排行榜如约而至。除了冠亚两位,排名第三至第五的数据库产品均经历了位次…

7、Linux文件和目录管理

常规命令的格式注意:调侃删库操作,请勿执行! 命令规范命令:使用正确的命令名称。 空格:命令与选项、参数之间需要空格分隔。 大小写:大部分命令对大小写不敏感,但部分命令和参数敏感,需要注意。 顺序:大部分情况下顺序无影响,但少数命令有顺序要求。详细命令选项参考…

Unity开源技能编辑器

https://www.bilibili.com/video/BV19Z421i7rs/?spm_id_from=333.788&vd_source=106601ca71b1d910c1ac4aa2466b744chttps://github.com/ancientElement/AE_SkillEditor_Plus 开源地址 https://github.com/ancientElement/AE_SkillEditor_Plus

降维算法 0基础小白也能懂(附代码)

在互联网大数据场景下,我们经常需要面对高维数据,在对这些数据做分析和可视化的时候,我们通常会面对「高维」这个障碍。在数据挖掘和建模的过程中,高维数据也同样带来大的计算量,占据更多的资源,而且许多变量之间可能存在相关性,从而增加了分析与建模的复杂性。我们希望…

倍福twincat2变量变化监控方法

使用场景 使用twincat2 scopeview工具对程序中快速变化的变量进行监控并分析程序异常点 监控设置打开TwincatScopeView软件新建示波器并添加Channel填写AMS地址插入需要监控的变量(此处可将需要监控的变量赋值,置顶,方便添加)调整窗口显示范围选择固定时间监视/持续监控对图…

SBT20100VFCT-ASEMI低压降肖特基二极管SBT20100VFCT

SBT20100VFCT-ASEMI低压降肖特基二极管SBT20100VFCT编辑:ll SBT20100VFCT-ASEMI低压降肖特基二极管SBT20100VFCT 型号:SBT20100VFCT 品牌:ASEMI 封装:ITO-220AB 安装方式:插件 批号:最新 恢复时间:35ns 最大平均正向电流(IF):20A 最大循环峰值反向电压(VRRM):100V…