CF446D 题解
题意
给定一张 \(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 题解的更多相关文章
- 【CF446D】DZY Loves Games 高斯消元+矩阵乘法
[CF446D]DZY Loves Games 题意:一张n个点m条边的无向图,其中某些点是黑点,1号点一定不是黑点,n号点一定是黑点.问从1开始走,每次随机选择一个相邻的点走过去,经过恰好k个黑点到 ...
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
随机推荐
- 在docker中导入python的包时ImportError: libgthread-2.0.so.0: cannot open shared object file: No such file or directory
问题: ImportError: libGL.so.1: cannot open shared object file: No such file or directory ImportError: ...
- 【面试题】XSS攻击是什么?
XSS攻击是什么? 要点: XSS是跨站脚本攻击.向目标网站插入恶意代码.大量用户访问网站时运行恶意脚本获取信息 答: XSS是跨站脚本攻击(Cross Site Scripting),不写为CSS是 ...
- golang运算符
1.算术运算符 算术运算符有:+,-,*,/,%,++,-- 1.1 加号(+) 表示正数 数字相加 字符串拼接 package main import ( "fmt" ) fun ...
- ES6 新语法新特性总结中...
1. 感觉 for of 通杀 for循环 和 for in呢 aaa 可以是array /object for (let k of aaa) { console.log(k) } 2 ...
- Containerd 安装及使用(yum及源码)
yum 安装containerd 一.下载源码库: wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker- ...
- python_类 对象 属性
1, 类 (class) 类的概念表示某种对象的集合,用于表示某一种相同对象的模板.例如:人作为一个类 由这个"人"类定义出来的内容就是这个类定义出来的对象,类还拥有属性和功能,属 ...
- webpack5 与webpack4 之间差别
1.terserPlugin webpack4 上需要下载安装 terser-webpack-plugin 插件,并且需要配置,webpack5 上生产模式下默认开启压缩,开发环境也可以按如下配置 / ...
- HANDLE和HMOUDLE、HWND讲解
HWND是线程相关的,通常指明窗口句柄,通过句柄找到窗口所属进程和线程 Handle 是代表系统的内核对象,如文件句柄,线程句柄,进程句柄.系统对内核对象以链表的形式进行管理,载入到内存中的每一个内核 ...
- CCF 201812-2 小明放学
#include <iostream> #include <bits/stdc++.h> #include <string> using namespace std ...
- Java基础学习:6、方法的重载和可变参数
一.方法重载: 基本介绍: Java中允许在一个类中,多个同名方法的存在,到要求形参列表不一致. 注意事项: 1.方法名:必须一致. 2.形参列表:必须不同(形参类型或个数或顺序至少有一样不同,参数名 ...