P6154 游走

2023-12-21 00:52
文章标签 游走 p6154

本文主要是介绍P6154 游走,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题意:给出有向无环图,可能存在重边,每条边的边权均为1,问从其中随机等可能的挑选一条路径,问挑选出边的长度的期望是多少

思路:对于结果即为所有路径的长度总和除以总路径数量,而我们不容易直接找出所有路径然后计算长度总和,这题为有向无环图,所以我们可以通过拓扑来转移出以每个点为结尾的所所有路径的长度总和以及路径条数,正因为只有将所有一个点之前的所有点的状态全部得出之后,才能用这个点的状态来继续向下转移,所以可证拓扑的正确性

这里我们设len[i]代表以i为结尾的所有路径的长度总和,num[i]代表以i为结尾的路径数量

则对于一个队列中的可转移点u的所有临点v,num[v]+=num[u],len[v]+=len[u]+num[u],注意第二个转移方程+num[u]的原因是u到v的那条边, 总共会有num[u]条边会经过

Accode:

#include<bits/stdc++.h>
#define endl '\n'
#define INF 0x3f3f3f3f
#define INFF 0x3f3f3f3f3f3f3f3f
#define int long long
#define fix fixed<<setprecision
#define pb push_back
#define Mirai ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
using namespace std;
typedef pair<int,int> pii;
const int N=1e5+10,mod=998244353;
int du[N],len[N],num[N];
int n,m;
vector<int> g[N];
int qmi(int a,int b,int p)
{int res=1;while(b){if(b&1)res=res*a%p;a=a*a%p;b>>=1;}return res;
}
void top()
{queue<int> q;for(int i=1;i<=n;i++)if(du[i]==0)q.push(i);while(q.size()){int u=q.front();// cout<<u<<endl;q.pop();for(auto v:g[u]){num[v]=(num[v]+num[u])%mod;len[v]=(len[v]+len[u]+num[u])%mod;if(--du[v]==0)q.push(v);}}
}
void solve()
{cin>>n>>m;for(int i=1;i<=n;i++)num[i]=1;for(int i=0;i<m;i++){int u,v;cin>>u>>v;g[u].pb(v);du[v]++;}top();int reslen=0,resnum=0;for(int i=1;i<=n;i++){reslen=(reslen+len[i])%mod;resnum=(resnum+num[i])%mod;}cout<<reslen*qmi(resnum,mod-2,mod)%mod<<endl;
}
signed main()
{Mirai;int T=1;//cin>>T;while(T--){solve();}
}

这篇关于P6154 游走的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/518126

相关文章

GNN-节点向量(Node Embedding)的表征学习-发展:随机游走/一阶二阶相似度(静态表征)【直接学习出各个节点的向量表示】 -->图卷积(动态表征)【学习节点间聚合函数的参数】

静态表征 基于“随机游走”、“Word2vec”的:DeepWalk、Node2vec、Metapath2vec;基于“一阶相似度”、“二阶相似度”的:LINE、SDNE; 动态表征(GCN、GraphSAGE、GAT)【训练聚合函数的参数】

随机游走的PageRank算法 sensitive PageRank

随机游走的pagerank建立在pagerank基础之上, PageRank的简单介绍请看这里http://blog.csdn.net/zhonghuan1992/article/details/24396435 请先看随机游走的pageRank算法部分代码(代码写的挫了写见谅),根据代码分析 #include <cstdio>#include <cstring>#includ

数据包的游走

数据包在网络的游走: 先从本地的路由开始找起,数据包到达路由时,路由会先对数据包进行解剖,然后通过其目的ip选择其在网络上的最优路径(这也就是所谓的路由功能了)。当其选择了所谓的最优路径之后,数据包同样也会产生相应的变化。一个数据包的结构中目的ip与源ip载整个传输过程中是不会改变的。但是其每当经过一个路由节点时数据包中的源mac与目的mac则会发生改变。打一个比方,我现在本机想googl

6.2.4 随机游走(Random Walk)

随机游走这一名称由Karl Pearson在1905年提出[Pearson, K. (1905). The problem of the Random Walk. Nature. 72, 294.],本来是基于物理中"布朗运动"相关的微观粒子的运动形成的一个模型,后来这一模型作为数理金融中的重要的假设,指的是证券价格的时间序列将呈现随机状态,不会表现出某种可观测或统计的确定趋势,即证券价

1.8. 离散时间鞅-无界停时定理与随机游走

无界停时定理与随机游走 无界停时定理与随机游走1. 无界停时定理1.1. 一致可积1.2. 非一致可积 2. 应用于随机游动-鞅方法2.1. 随机游走构造的鞅2.2. 对称简单随机游走 无界停时定理与随机游走 1. 无界停时定理 本节给出一致可积下鞅的无界停时定理,说明一致可积下鞅的停止过程一致可积,且满足 ( X N , F n (X

《经典论文阅读2》基于随机游走的节点表示学习—Deepwalk算法

word2vec使用语言天生具备序列这一特性训练得到词语的向量表示。而在图结构上,则存在无法序列的难题,因为图结构它不具备序列特性,就无法得到图节点的表示。deepwalk 的作者提出:可以使用在图上随机游走的方式得到一串序列,然后再根据得到游走序列进行node2vec的训练,进而获取得到图节点的表示。本质上deepwalk和word2vec师出同门(来自同一个思想),deepwalk算法的提出

PBXAI:将疾病预测转为沿知识图谱的随机游走

PBXAI:将疾病预测转为沿知识图谱的随机游走 PBXAI = 知识图谱构建 + 病人特征与知识图谱连接 + 强化学习 + 疾病发展路径的生成PBXAI 流程PBXAI 算法设计   论文: https://arxiv.org/ftp/arxiv/papers/2010/2010.08300.pdf 代码:https://github.com/ZJU-BMI/PBXAI

LOJ #2542 [PKUWC2018]随机游走 (概率期望、组合数学、子集和变换、Min-Max容斥)

很好很有趣很神仙的题! 题目链接: https://loj.ac/problem/2542 题意: 请自行阅读 题解首先我们显然要求的是几个随机变量的最大值的期望(不是期望的最大值),然后这玩意很难求,根据Min-Max容斥化成最小值的期望来求。 Minn-max容斥是指\(\max(x_1,x_2,...,x_n)=\sum_{S\in \{1,2,...,n\} } (-1)^{|S|-1}

randomwalk随机游走

PageRank就是一种随机游走