首页 > 其他分享 >期望应用

期望应用

时间:2023-08-02 13:11:08浏览次数:26  
标签:cnt 期望 int back MAXN 应用 dp

期望应用

有向图

例题1 洛谷-P6154 游走

  • 统计 + 计算概率
  • 拓扑排序
  • 类似前缀的统计路径总数量路径总长度
  • 然后直接求期望

例题2 洛谷-P4316 绿豆蛙的归宿

  • 期望 dp
  • 拓扑排序,做期望 dp

注意期望 dp 一般是倒着做,这样思路会更加清晰

  • 这一题就需要注意倒着做,不然会 WA
  • 这里的 \(dp_i\) 表示从 \(i\) 倒 \(n\) 所经过的路径总长度期望
  • 设在有向图中 \(u\) 可以到达 \(v\)
  • \(dp_u = \sum_{i=1}^{k}{\frac{dp_{v} + w}{cnt_u}}\)
#include <bits/stdc++.h>
using namespace std;

const int MAXN = 2e5 + 3;

struct Edge{ int x, w; };

int n, m, Nxt[MAXN], cnt[MAXN];
long double dp[MAXN];
vector<Edge> eg[MAXN], son[MAXN];

void dps(){
  for(int i = 1; i <= n; i++) Nxt[i] = max(0, int(son[i].size()));
  vector<int> stk;
  for(int i = 1; i <= n; i++){
    if(Nxt[i] <= 0) stk.push_back(i), dp[i] = 0;
  }
  while(int(stk.size()) > 0){
    int i = stk.back();
    stk.pop_back();
    for(Edge j : eg[i]){
      dp[j.x] += (dp[i] + j.w) / cnt[j.x];
      if(Nxt[j.x] > 0){
        Nxt[j.x]--;
        if(Nxt[j.x] == 0) stk.push_back(j.x);
      }
    }
  }
  cout << fixed << setprecision(2) << dp[1];
}

int main(){
  cin >> n >> m;
  for(int i = 1, U, V, W; i <= m; i++){
    cin >> U >> V >> W, cnt[U]++, swap(U, V);
    eg[U].push_back({V, W}), son[V].push_back({U, W});
  }
  dps();
  return 0;
}

标签:cnt,期望,int,back,MAXN,应用,dp
From: https://www.cnblogs.com/huangqixuan/p/17600410.html

相关文章

  • 流程引擎表单:可自定义和多场景应用,快速助力提质增效!
    当前,在办公职场中,传统表单制作暴露出越来越多的漏洞,已经无法满足日益增长的业务需求。采用什么样的平台和软件可以提高效率?低代码技术平台是深得客户喜爱的一种快速框架平台,其中的流程引擎表单是其主要功能之一,可以助力提升办公协作效率,满足广大用户流程化办公的心愿。随着社会发......
  • 【腾讯云Cloud Studio实战训练营】使用Cloud Studio快速开发一个3D家具个性化定制应用
    目录前言: 一、腾讯云CloudStudio介绍:1、接近本地IDE的开发体验2、多环境可选,或连接到云主机3、随时分享预览效果4、兼容VSCode插件 5、AI代码助手二、腾讯云CloudStudio项目实践(3D家具个性化定制应用)1、注册并登录CloudStudio2、进入Vue预置开发环境2.1登录成功进入C......
  • JavaScript学习 -- SM4算法应用实例
    SM4算法,也被称为国密算法,是中国公布的一种高效且安全的对称加密算法。在JavaScript中,我们可以通过使用CryptoJS库来实现SM4算法的加密和解密。本篇博客将为您介绍如何在JavaScript中使用SM4算法,并提供一个实际的案例。首先,确保您已经引入了CryptoJS库。以下是一个使用SM4算法进行加......
  • Rust + Tauri 开发一个自动生成申论的桌面应用
    前端开发桌面应用,第一反应肯定是 Electron但Electron有一个众所周知的问题:每一个应用都会打包一个 chromium。如果电脑上安装了10个Electron应用,就会安装10个chromium而Tauri使用 WebView作为GUI方案,不会打包在应用内,而是检查系统是否有预装WebView,从而避免多个应......
  • PHPJSON数据格式常见应用及实例解析
    PHPJSON数据格式常见应用及实例解析随着Web应用的兴起和普及,数据的传输和处理已经成为Web开发中不可或缺的一部分。PHP作为一种广泛使用的服务器端编程语言,对于数据的处理和传输也有着非常丰富的支持。其中,JSON数据格式已经成为Web开发中最常用的数据格式之一。本文将结合实例,介......
  • 腾讯云轻量应用服务器+云服务器CVM+GPU云服务器!
    本篇文章给大家介绍一下腾讯云八月份的优惠活动,主要有限量秒杀,买赠专区买一年送三个月,三年轻量应用服务器,五年云服务器CVM以及学生云服务器等等,近期有上云需求的用户可以参考一下!一、秒杀专区秒杀活动提供的都是云服务器产品,包含轻量应用服务器,云服务器CVM和CPU云服务器,都是基础配......
  • 如何在Windows上将iOS应用上传到App Store
     ApplicationUploaderiOSApp上架工具是一款非常好用的针对iOS苹果应用程序软件开发的实用编程工具,它的主要作用是帮助用户进行快速的程序应用设计和程序应用调试,节省用户进行软件开发耗费的不必要时间!​编辑切换为居中添加图片注释,不超过140字(可选......
  • 使用Maven插件为SpringBoot应用构建Docker镜像
    Docker开启远程API用vim编辑器修改docker.service文件#生成证书opensslgenrsa-aes256-outca-key.pem4096opensslreq-new-x509-days365-keyca-key.pem-sha256-outca.pemopensslgenrsa-outserver-key.pem4096opensslreq-subj"/CN=localhost"-sha256-......
  • windows如何上架ios应用到app store
    windows如何上架ios应用到appstoreApplicationUploaderiOSApp上架工具是一款非常好用的针对iOS苹果应用程序软件开发的实用编程工具,它的主要作用是帮助用户进行快速的程序应用设计和程序应用调试,节省用户进行软件开发耗费的不必要时间!​编辑切换为居中......
  • 低代码PAAS平台源码,采用对象式和勾选式实现企业应用程序开发
    管理后台低代码PaaS平台是一款基于SalesforcePlatform的开源替代方案,旨在为企业提供高效、灵活、易于使用的低代码开发平台。低代码PaaS平台的10大核心引擎功能:1.建模引擎2.移动引擎3.流程引擎4.页面引擎5.报表引擎6.安全引擎7.API引擎8.应用集成引擎9.代码引擎10.公......