Robots

\[Time Limit: 1000 ms \quad Memory Limit: 262144 kB
\]

题意

有一个机器人要从 \(1\) 点走到 \(n\) 点,每走一步都需要一天,并且这一步的代价是已经经过的天数。

思路

将问题拆成两个问题,\(dp1[i]\) 表示从 \(i\) 到 \(n\) 的天数期望,\(dp2[i]\) 表示从 \(i\) 到 \(n\) 的代价期望。

那么就很容易得到

\[dp1[u] = \frac{\sum_{u->v}(dp1[v]) + dp1[u]}{u.size()+1} + 1\\
dp1[u] = \frac{\sum_{u->v}(dp1[v]) + u.size()+1}{u.size()} \\
dp2[u] = \frac{\sum_{u->v}(dp2[v]) + dp2[u]}{u.size()+1} + dp1[u]\\
dp2[u] = \frac{\sum_{u->v}(dp2[v]) + (u.size()+1)*dp1[u]}{u.size()}
\]

/***************************************************************
> File Name : a.cpp
> Author : Jiaaaaaaaqi
> Created Time : Mon 09 Sep 2019 10:07:54 PM CST
***************************************************************/ #include <map>
#include <set>
#include <list>
#include <ctime>
#include <cmath>
#include <stack>
#include <queue>
#include <cfloat>
#include <string>
#include <vector>
#include <cstdio>
#include <bitset>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#define lowbit(x) x & (-x)
#define mes(a, b) memset(a, b, sizeof a)
#define fi first
#define se second
#define pb push_back
#define pii pair<int, int> typedef unsigned long long int ull;
typedef long long int ll;
const int maxn = 1e5 + 10;
const int maxm = 1e5 + 10;
const ll mod = 1e9 + 7;
const ll INF = 1e18 + 100;
const int inf = 0x3f3f3f3f;
const double pi = acos(-1.0);
const double eps = 1e-8;
using namespace std; int n, m;
int cas, tol, T; vector<int> vv[maxn], rv[maxn];
int ind[maxn];
double dp1[maxn], dp2[maxn]; void solve() {
queue<int> q;
dp1[n] = dp2[n] = 0;
q.push(n);
while(!q.empty()) {
int u = q.front();
q.pop();
if(u != n) {
int sz = rv[u].size();
{
double ans = 0;
for(auto v : rv[u]) {
ans += dp1[v];
}
dp1[u] = 1.0*(ans+sz+1)/sz;
}
{
double ans = 0;
for(auto v : rv[u]) {
ans += dp2[v];
}
dp2[u] = 1.0*(ans+1.0*(sz+1)*dp1[u])/sz;
}
}
for(auto v : vv[u]) {
ind[v]--;
if(ind[v] == 0) q.push(v);
}
}
} int main() {
// freopen("in", "r", stdin);
scanf("%d", &T);
while(T--) {
scanf("%d%d", &n, &m);
for(int i=1; i<=n; i++) {
vv[i].clear();
rv[i].clear();
dp1[i] = dp2[i] = 0;
}
for(int i=1, x, y; i<=m; i++) {
scanf("%d%d", &x, &y);
rv[x].pb(y);
vv[y].pb(x);
ind[x]++;
}
solve();
printf("%.2f\n", dp2[1]);
}
return 0;
}

Robots 2019南京网络赛 (概率dp)的更多相关文章

  1. 2019 南京网络赛A

    南京网络赛自闭现场 https://nanti.jisuanke.com/t/41298 二维偏序经典题型 二维前缀和!!! #include<bits/stdc++.h> using n ...

  2. 2019南京网络赛 D Robots 期望dp

    题目传送门 题意:给出一幅有向无环图,保证只有1入度为0,n出度为0,求问一个机器人从1出发,每天等概率的走到相邻点或者留在原地,问到达n点的代价.每天的代价都不一样,就是天数(第x天走一步的代价就是 ...

  3. [2019南京网络赛D题]Robots

    题目链接 2019.9.2更新 第二天睡醒想了想发现好像搜一遍就可以过,赛时写的花里胡哨的还错了,太菜了QAQ #include<bits/stdc++.h> using namespac ...

  4. The Preliminary Contest for ICPC Asia Nanjing 2019/2019南京网络赛——题解

    (施工中……已更新DF) 比赛传送门:https://www.jisuanke.com/contest/3004 D. Robots(期望dp) 题意 给一个DAG,保证入度为$0$的点只有$1$,出 ...

  5. 2019南京网络赛E:K Sum

    Description: 定义函数 \[ f _n (k) = \sum _{l _1 = 1} ^n \sum _{l _2 = 1} ^n \cdots \sum _{l _k = 1} ^n \ ...

  6. 2019 南京网络赛 B super_log 【递归欧拉降幂】

    一.题目 super_log 二.分析 公式很好推出来,就是$$a^{a^{a^{a^{...}}}}$$一共是$b$个$a$. 对于上式,由于指数太大,需要降幂,这里需要用到扩展欧拉定理: 用这个定 ...

  7. HDU 4758 Walk Through Squares (2013南京网络赛1011题,AC自动机+DP)

    Walk Through Squares Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Oth ...

  8. ICPC 2019 徐州网络赛

    ICPC 2019 徐州网络赛 比赛时间:2019.9.7 比赛链接:The Preliminary Contest for ICPC Asia Xuzhou 2019 赛后的经验总结 // 比赛完才 ...

  9. 2018ICPC南京网络赛

    2018ICPC南京网络赛 A. An Olympian Math Problem 题目描述:求\(\sum_{i=1}^{n} i\times i! \%n\) solution \[(n-1) \ ...

随机推荐

  1. centos7修改宝塔面板端口6666无法访问

    相信你看到我这篇随笔的时候已经查阅了不少资料了吧 先看看我和我朋友的对话吧 原因,想修改宝塔默认面板端口8888为6666,用的阿里云服务器,并且在安全组添加了6666端口 然后无法访问,想到linu ...

  2. 2019 C/C++《阿里》面试题总结

    一.C和C++的区别是什么? C是面向过程的语言,C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛. C中函数不能进行重载,C++函数可以重载 C++在C的基础上增添类,C是一个结构化语言 ...

  3. Logback获取SkyWalking的全局唯一标识 trace-id 记录到日志中

    为什么要获取trace-id 通过上文Docker-Compose搭建单体SkyWalking我们搭建了SkyWalking服务,我们需要在日志中记录下来每次请求的唯一标识(trace-id),这样就 ...

  4. Spring Boot 复习

    简介 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭 建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义 ...

  5. Linux环境下:vmware安装Windows报错误-缺少所需的CD/DVD驱动器设备驱动程序

    解决方法:将硬盘格式从SCSI改为IDE. 方法如下: 右键点击你新建的虚拟机名,点击最下面的setting,看到左侧第二行是hard disk 了么,你那里肯定是SCSI的,选中它,点最下面的rem ...

  6. MySQL里默认的几个库是干啥的?

    本文涉及:MySQL安装后自带的4个数据库:information_schema. performance_schema.sys.mysql的作用及其中各个表所存储的数据含义 information_ ...

  7. vue生成pdf

    主要参考 https://blog.csdn.net/qq_37880968/article/details/94626001 1.添加模块 npm install --save html2canva ...

  8. MYSQL使用mysqldump导出表的部分数据

    MySQLdump是MySQL自带的导出数据工具,通常我们用它来导出MySQL中,但是有时候我们需要导出MySQL数据库中某个表的部分数据,这时该怎么办呢? mysqldump命令中带有一个 --wh ...

  9. mac下比较好用的svn软件,SVN客户端CornerStone 2.7.10 破解版

    一.已经破解,可以直接使用. dmg文件无密码,也不需要注册机.直接使用即可     二. 界面... 三.添加repository 点击左侧栏中REPOSITORY那一栏的+选择添加reposito ...

  10. nginx 一个端口布署多个单页应用(history路由模式)。

    目前web开发 使用一般前后端分离技术,并且前端负责路由.为了美观,会采用前端会采用h5 history 模式的路由.但刷新页面时,前端真的会按照假路由去后端寻找文件.此时,后端必须返回index(i ...