题意

传送门

给定一张 \(n\) 个点 \(m\) 条边的无向图,每个节点有权值 \(v_i=\) \(0/1\)。角色从节点 \(1\) 开始随机游走,走到 \(n\) 停止。求其经过路径上权值和等于 \(k-1\) 的概率。经过多次算多次。保证 \(v_1=0,v_n=1\)。

\(1 \le n \le 500,1 \le m \le 10^5,2 \le k \le 10^9,1\le \sum v_i \le 101\)。

题解

首先考虑所有 \(v_i\) 都为 \(1\) 的情况。那么就是走 \(k-1\) 步。这个用矩阵快速幂 \(n^3 \log k\) 可以解决。

但此题不一定 \(v_i\) 都为 \(1\),且 \(n^3 \log k\) 会超时。发现 \(v_i=1\) 的节点个数 \(t\) 较小,开始思考 \(t^3 \log k\) 的算法。

我们称 \(v_i=1\) 的点为特殊点。参考上面的思路,我们只需求得从一个特殊点到另一个特殊点且途中不经过其他特殊点的概率即可。

不难想到转移方程:设 \(f_{i,j}\) 为从点 \(i\) 到特殊点 \(j\),且不经过其他特殊点的概率。\(g_{i,j}\) 为从特殊点 \(i\) 到特殊点 \(j\) 的概率。

那么当 \(i\) 为非特殊点时,有 \(\displaystyle f_{i,j}=\frac{\sum_{(u,i)\in E} f_{u,j}}{d_i}\)。当 \(i\) 为特殊点时,有 \(f_{i,i}=1\),\(\forall j \neq i,f_{i,j}=0\)。然后 \(\displaystyle g_{i,j}=\frac{\sum_{(u,i)\in E}f_{u,j}}{d_i}\)。

那么求出 \(f\) 即可。但我们发现 \(f\) 有 \(nt\) 个未知数,高斯消元是 \(n^3t^3\) 的,无法通过。怎么办呢?

发现 \(f\) 对于 \(j\) 是独立的。那么可以降到 \(n^3t\)。但还是无法通过。

复杂度到这里好像陷入了瓶颈。但把方程写出来,仔细观察可以发现对不同 \(j\),方程前面的系数部分是一样的,仅常数项有区别。那么我们想一想高斯消元的过程,可以将系数部分合并。那么矩阵变成了 \(n \times (n+t)\),复杂度是 \(n(n+t)^2\) 的,可以通过。

于是此题解决。

CF446D 题解的更多相关文章

  1. 【CF446D】DZY Loves Games 高斯消元+矩阵乘法

    [CF446D]DZY Loves Games 题意:一张n个点m条边的无向图,其中某些点是黑点,1号点一定不是黑点,n号点一定是黑点.问从1开始走,每次随机选择一个相邻的点走过去,经过恰好k个黑点到 ...

  2. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  3. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  4. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  5. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  6. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  7. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  8. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  9. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  10. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. UE4启动顺序

    GameMode PlayerController Actor Level gameMode , playerController控制pawn , 激活默认相机active camera , getP ...

  2. Open vSwitch虚拟交换机实践

    实验2:Open vSwitch虚拟交换机实践 (一)基本要求 1.ovs-vsctl基础操作实践: 创建OVS交换机,完成相关要求后查看网络状态与端口信息: 2.使用Mininet搭建的SDN拓扑, ...

  3. 关于paddleocr2.6 布局分析的踩坑总结(一)

    8月24日paddleocr发布了2.6.0,之前使用过2.5版本的布局分析,整体比较好用.近期就尝试了一下paddleocr的新版本,记录一下尝鲜经历.2.6版本的公告中指出,布局分析模型缩小了95 ...

  4. springboot中实现逆向工程

    如果这篇文章能给你带来帮助 不胜荣幸,如果有不同的意见也欢迎批评指正,废话不多说直接上代码.(参考文档:https://www.cnblogs.com/kibana/p/8930248.html) 第 ...

  5. list集合之流操作

    1.根据某一个实体字段进行去重(分组)操作 List<Object> list = objectList.stream().collect(Collectors.collectingAnd ...

  6. JS 替代eval方法

  7. Document.createEvent与new Event区别

    Document.createEvent 写法: const e = document.createEvent('HTMLEvents'); e.initEvent('click', true, tr ...

  8. 批量创建xshell会话

    import re import os import openpyxl from openpyxl import Workbook,workbook from concurrent.futures i ...

  9. kunkun

    <html> <head> <title>cxk</title> </head> <body><h1>给设计师:字体 ...

  10. QT 使用QDomDocument::setContent()读XML文件总是返回false

    代码: if(!doc.setContent(&file)){读取失败操作}发现总是返回false: 使用如下代码调试: if(!doc.setContent(&file,&s ...