`
Simone_chou
  • 浏览: 192646 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

Walk(概率DP)

    博客分类:
  • HDOJ
 
阅读更多

Walk

Time Limit: 30000/15000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 291    Accepted Submission(s): 200
Special Judge


Problem Description
I used to think I could be anything, but now I know that I couldn't do anything. So I started traveling.

The nation looks like a connected bidirectional graph, and I am randomly walking on it. It means when I am at node i, I will travel to an adjacent node with the same probability in the next step. I will pick up the start node randomly (each node in the graph has the same probability.), and travel for d steps, noting that I may go through some nodes multiple times.

If I miss some sights at a node, it will make me unhappy. So I wonder for each node, what is the probability that my path doesn't contain it.
 

 

Input
The first line contains an integer T, denoting the number of the test cases.

For each test case, the first line contains 3 integers n, m and d, denoting the number of vertices, the number of edges and the number of steps respectively. Then m lines follows, each containing two integers a and b, denoting there is an edge between node a and node b.

T<=20, n<=50, n-1<=m<=n*(n-1)/2, 1<=d<=10000. There is no self-loops or multiple edges in the graph, and the graph is connected. The nodes are indexed from 1.
 

 

Output
For each test cases, output n lines, the i-th line containing the desired probability for the i-th node.

Your answer will be accepted if its absolute error doesn't exceed 1e-5.
 

 

Sample Input
2
5 10 100
1 2
2 3
3 4
4 5
1 5
2 4
3 5
2 5
1 4
1 3
10 10 10
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
4 9
 

 

Sample Output

 

0.0000000000
0.0000000000
0.0000000000
0.0000000000
0.0000000000
0.6993317967
0.5864284952
0.4440860821
0.2275896991
0.4294074591
0.4851048742
0.4896018842
0.4525044250
0.3406567483
0.6421630037

     题意:

     给出 T 组case,后给出 N 个结点,M 条边,还有 D 步。任意选择一个起点开始,求出所有在 D 步内不经过结点 i 的概率。输出概率。

 

     思路:

     概率 DP。dp [ i ] [ k ] 表示在 k 步内不经过 i 点的概率,故更新的时候更新所有边中不存在 i 结点的边,最后概率即为 sum { dp [ j ] [ d ] ( 1 <= j <= n && j != i ) }。

 

     AC:

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>

using namespace std;

const int VMAX = 55;
const int STEP = 10005;

vector<int> G[VMAX];
double dp[STEP][VMAX];

int main() {

    int t;
    scanf("%d", &t);
    while (t--) {
        int n, m, d;

        scanf("%d%d%d", &n, &m, &d);

        for (int i = 1; i <= n; ++i)
            G[i].clear();

        while (m--) {
            int a, b;
            scanf("%d%d", &a, &b);
            G[a].push_back(b);
            G[b].push_back(a);
        }

        for (int nn = 1; nn <= n; ++nn) {
            memset(dp, 0, sizeof(dp));
            for (int i = 1; i <= n; ++i)
                dp[0][i] = (1.0 / n);

            for (int k = 1; k <= d; ++k) {
                for (int i = 1; i <= n; ++i) {

                    if (i == nn) continue;

                    for (int j = 0; j < G[i].size(); ++j) {
                        int v = G[i][j];
                        if (v == nn) continue;
                        dp[k][v] += dp[k - 1][i] * (1.0 / G[i].size());
                    }

                }
            }

            double sum = 0;
            for (int i = 1; i <= n; ++i)
                sum += dp[d][i];

            printf("%.10lf\n", sum);
        }

    }

    return 0;
}

 

分享到:
评论

相关推荐

    SnmpWalk.zip_SNMP_snmp WALK_snmpwalk _snmpwalk实现

    这个压缩包"SnmpWalk.zip"可能包含了一个关于`snmpwalk`的实现以及测试程序,名为"testSNMP++ - 副本"。 `snmpwalk`操作基于SNMP协议的GETNEXT请求,它会从指定的OID(Object Identifier)开始,连续获取MIB树中的...

    snmpwalk网络管理工具

    **SNMPwalk网络管理工具详解** SNMP(Simple Network Management Protocol)是一种广泛应用于网络设备管理的协议,它允许网络管理员远程收集和配置网络设备的状态信息。而`snmpwalk`是基于SNMP协议的一个强大工具,...

    SNMPWALK安装rpm.rar

    SNMPWALK是基于SNMP协议的一个实用工具,它用于通过网络遍历MIB(管理信息库)树,获取特定对象标识符(OID)或其子树的所有信息。这对于监控网络性能、诊断问题以及管理系统配置非常有用。 本资源包含适用于CentOS...

    net-snmp,snmpwalk(windows最新版本)

    该工具是运行于windows平台的exe可执行文件,跟linux平台的snmpwalk功能类似,使用方法:cmd→cd到该exe文件的目录→snmpwalk.exe + option(通过snmpwalk.exe -h可以获得相关参数及运用方法,包括version、...

    ubuntu18.04下snmpwalk离线安装deb文件

    SNMPwalk是基于SNMP协议的一个实用工具,它允许用户遍历网络上的设备,获取关于设备配置和状态的详细信息。在没有互联网连接的情况下,离线安装SNMPwalk可能会变得有些复杂,但通过以下步骤,你可以顺利在Ubuntu ...

    修改了deepwalk代码的GraphEmbedding-master

    修改了deepwalk代码的GraphEmbedding-master修改了deepwalk代码的GraphEmbedding-master修改了deepwalk代码的GraphEmbedding-master修改了deepwalk代码的GraphEmbedding-master修改了deepwalk代码的GraphEmbedding-...

    snmp4j get walk

    "SNMP get walk" 是一个关键的操作,它允许从网络设备中批量获取MIB对象的值,而不仅仅是一个接一个地获取。以下是对SNMP4J库和get walk操作的详细解释: 1. **SNMP4J简介**:SNMP4J是一个开源项目,它实现了SNMPv1...

    SnmpWalk查看snmp

    SnmpWalk是SNMP协议中一个非常有用的工具,主要用于遍历网络设备的MIB(管理信息库)并获取大量信息。在本文中,我们将深入探讨SnmpWalk的使用、其工作原理以及如何通过它来诊断网络问题。 首先,让我们理解什么是...

    Go语言 walk包

    Go语言的walk包是一个专为Windows平台设计的用户界面(UI)库,它提供了一整套丰富的组件和功能,使得开发者能够轻松创建出美观且功能强大的应用程序。在Windows上开发Go语言应用时,walk包是一个不可或缺的工具,...

    snmpwalk.exe(windows 平台)

    该工具是运行于windows平台的exe可执行文件,跟linux平台的snmpwalk功能类似,使用方法:cmd→cd到该exe文件的目录→snmpwalk.exe + option(通过snmpwalk.exe -h可以获得相关参数及运用方法,包括version、...

    DeepWalk .pptx

    "DeepWalk" DeepWalk 是一种学习网络中顶点潜在表示的方法,通过截断的随机漫步获得的局部信息,学习潜在表示。DeepWalk 概括了语言建模和无监督特征学习(或深度学习)的相关方法,从单词序列到图形。 DeepWalk ...

    Java实现snmp的get和walk代码示例

    Java实现snmp的get和walk代码示例 本文主要介绍了使用Java语言实现SNMP(Simple Network Management Protocol,简单网络管理协议)的get和walk功能,使用了第三方库SNMP4j来实现相关功能。 一、SNMP简介 SNMP是一...

    整理版DeepWalk-1.0.3

    **DeepWalk技术详解** DeepWalk是一种基于图的无监督学习方法,它借鉴了自然语言处理中的词嵌入技术,如Word2Vec,将网络结构转化为序列数据,进而学习节点的低维向量表示。该技术由Stanford大学的Perozzi、Al-Rfou...

    dibian,Ubuntu版本的snmpwalk的安装介质,安装包,及说明文档

    `snmpwalk`是SNMP工具集的一部分,用于遍历网络设备上的MIB(Management Information Base)树,获取设备状态信息。在Ubuntu或Debian系统中,我们可以按照以下步骤安装和使用`snmpwalk`。 首先,我们需要了解提供的...

    snmpget、walk命令行工具,可直接使用

    本篇文章将深入讲解SNMPget和SNMPwalk这两个命令行工具以及它们在管理网络设备中的应用。 SNMPget是SNMP协议中最基本的命令,用于从远程设备获取单个MIB(管理信息库)对象的值。MIB是SNMP中的一个数据库,包含了...

    TreeWalk.rar

    《DNS服务器软件——TreeWalk深度解析》 DNS(Domain Name System)是互联网上的一项关键服务,它将人类可读的域名转换为计算机可识别的IP地址。在搭建和管理网络时,配置自己的DNS服务器至关重要,这能提升网络的...

    DeepWalk: Online Learning of Social Representations作者ppt

    根据给定文件内容,DeepWalk是一个用于社会网络中节点表示学习的在线学习算法。该算法由Bryan Perozzi, Rami Al-Rfou和Steven Skiena在Stony Brook University开发,首次提出于2014年ACM SIG-KDD上。DeepWalk的核心...

    C#SNMP_WALK举例

    ### C# 中 SNMP_WALK 代码详解 #### 一、前言 在现代网络管理中,简单网络管理协议(Simple Network Management Protocol, SNMP)是一种广泛使用的标准协议,用于收集网络设备的信息并对其进行管理。SNMP Walk 是...

    snmpWalk.exe

    SnmpWalk allows you to detect a set of variables that are available for reading on a certain device. You can obtain a full list or just part. By analyzing the results of a network device scan ...

    SNMP Walk源代码

    SNMP Walk是SNMP协议中的一个重要功能,用于遍历网络设备MIB(管理信息库)中的所有对象,从而获取设备的状态信息。 在SNMP++库中,SNMP Walk被实现为一个强大的工具,它可以帮助开发者遍历网络设备的所有OID(对象...

Global site tag (gtag.js) - Google Analytics