长沙理工大学第十二届ACM大赛-重现赛 G - 跑路ing
题目描述
输入描述:
多组输入,保证绝大部分为小数据。
每组输入第一行n m(1<=n<=100,1<=m<=10000),表示n个点m条有向边。
接下来m行,每行u v(1<=u,v<=n),表示有一条有向边从u连向v
输出描述:
算出vigoss18在所有位置的概率,并输出其中的最大值即可。
你的答案与标准答案的误差应保持在1e-6以内。
输入
3 3
1 2
2 3
3 1
输出
0.333333333
题解
$dp$。
$dp[i][j]$表示走$i$步,停在$j$的概率,$dp[i][j]$可以从$dp[i-1][*]$得到,拿矩阵快速幂跑跑就能得到比较高的精度。
#include <bits/stdc++.h>
using namespace std; const int maxn = 100 + 10;
int g[maxn][maxn];
int out[maxn];
int n, m; struct M {
int r, c;
double a[maxn][maxn];
}; M mul(const M &a, const M &b) {
M res;
res.r = a.r;
res.c = b.c;
for(int i = 1; i <= res.r; i ++) {
for(int j = 1; j <= res.c; j ++) {
res.a[i][j] = 0;
for(int k = 1; k <= a.c; k ++) {
res.a[i][j] = res.a[i][j] + a.a[i][k] * b.a[k][j];
}
}
}
return res;
} int main() {
while(~scanf("%d%d", &n, &m)) {
for(int i = 1; i <= n; i ++) {
out[i] = 0;
for(int j = 1; j <= n; j ++) {
g[i][j] = 0;
}
}
while(m --) {
int u, v;
scanf("%d%d", &u, &v);
g[u][v] ++;
out[u] ++;
} M A;
A.r = n;
A.c = n;
for(int i = 1; i <= n; i ++) {
for(int j = 1; j <= n; j ++) {
if(i == j) A.a[i][j] = 1.0;
else A.a[i][j] = 0.0;
}
} M B;
B.r = 1;
B.c = n;
for(int j = 1; j <= n; j ++) {
if(j == 1) B.a[1][j] = 1.0;
else B.a[1][j] = 0.0;
} M C;
C.r = n;
C.c = n;
for(int j = 1; j <= n; j ++) {
for(int i = 1; i <= n; i ++) {
C.a[i][j] = 0.0;
// i -> j
if(i == j) {
C.a[i][j] = 1.0 / (out[i] + 1);
} else {
C.a[i][j] = 1.0 * g[i][j] / (out[i] + 1);
}
}
} int b = 0x7FFFFFFF;
while(b) {
if(b & 1) B = mul(B, C);
b = b / 2;
C = mul(C, C);
}
A = mul(A, B); double ans = 0.0;
for(int j = 1; j <= n; j ++) {
ans = max(ans, A.a[1][j]);
}
printf("%.8f\n", ans); }
return 0;
}
长沙理工大学第十二届ACM大赛-重现赛 G - 跑路ing的更多相关文章
- 长沙理工大学第十二届ACM大赛-重现赛 J 武藏牌牛奶促销
链接:https://ac.nowcoder.com/acm/contest/1/J 来源:牛客网 武藏牌牛奶促销 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他 ...
- 长沙理工大学第十二届ACM大赛-重现赛I 主持人的烦恼 (sort)
链接:https://ac.nowcoder.com/acm/contest/1/I 来源:牛客网 主持人的烦恼 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语 ...
- 长沙理工大学第十二届ACM大赛-重现赛 D 小M和天平 (01背包)
链接:https://ac.nowcoder.com/acm/contest/1/D 来源:牛客网 小M和天平 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 131072K,其他语言 ...
- 长沙理工大学第十二届ACM大赛-重现赛C 安卓图案解锁 (模拟)
链接:https://ac.nowcoder.com/acm/contest/1/C来源:牛客网 安卓图案解锁 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言 ...
- 长沙理工大学第十二届ACM大赛-重现赛 B 日历中的数字 (实现)
链接:https://ac.nowcoder.com/acm/contest/1/B来源:牛客网 全屏查看题目 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他 ...
- 长沙理工大学第十二届ACM大赛-重现赛 L - 选择困难症
题目描述 小L有严重的选择困难症. 早上起床后,需要花很长时间决定今天穿什么出门. 假设一共有k类物品需要搭配选择,每类物品的个数为Ai,每个物品有一个喜欢值Vj,代表小L对这件物品的喜欢程度. 小L ...
- 长沙理工大学第十二届ACM大赛-重现赛 K - 大家一起来数二叉树吧
题目描述 某一天,Zzq正在上数据结构课.老师在讲台上面讲着二叉树,zzq在下面发着呆. 突然zzq想到一个问题:对于一个n个节点,m个叶子的二叉树,有多少种形态呐?你能告诉他吗? 对于第一组样例的解 ...
- 长沙理工大学第十二届ACM大赛-重现赛
年轮广场 时间限制:1秒 空间限制:131072K 题目描述 在云塘校区,有一个很适合晒太阳的地方————年轮广场 年轮广场可以看成n个位置顺时针围成一个环. 这天,天气非常好,Mathon带着他的小 ...
- 长沙理工大学第十二届ACM大赛-重现赛 大家一起来数二叉树吧 (组合计数)
大意: 求n结点m叶子二叉树个数. 直接暴力, $dp[i][j][k][l]$表示第$i$层共$j$节点, 共$k$叶子, 第$i$层有$l$个叶子的方案数, 然后暴力枚举第$i$层出度为1和出度为 ...
随机推荐
- 解决tomcat占用8080端口问题图文详解
相信很多朋友都遇到过这样的问题吧,tomcat死机了,重启eclipse之后,发现 Several ports (8080, 8009) required by Tomcat v6.0 Server ...
- spring boot 2.0.3+spring cloud (Finchley)4、熔断器Hystrix
在分布式系统中服务与服务之间的依赖错综复杂,一种不可避免的情况就是某些服务会出现故障,导致依赖于他们的其他服务出现远程调度的线程阻塞.某个服务的单个点的请求故障会导致用户的请求处于阻塞状态,最终的结果 ...
- 「LibreOJ β Round #4」多项式 (广义欧拉数论定理)
https://loj.ac/problem/525 题目描述 给定一个正整数 kkk,你需要寻找一个系数均为 0 到 k−1之间的非零多项式 f(x),满足对于任意整数 x 均有 f(x)modk= ...
- atcoder #082 E 暴力 计算几何
给出点集,然后求一个凸包的所有的子凸包的贡献总和,贡献计算是凸包内部含边界上点的数量N,凸包的不包含边界的顶点数S,贡献为$2^{N-S}$ 首先很容易想到,凸包上包含内部的所有点构成的子凸包有Sum ...
- Prufer Code
1069. Prufer Code Time limit: 0.25 secondMemory limit: 8 MB A tree (i.e. a connected graph without c ...
- Javascript动态绑定
<div onclick="test()"></div> <script> function test(){ //code } </scr ...
- SpringCloud入门系列(一)
https://www.cnblogs.com/edisonchou/p/java_spring_cloud_foundation_sample_list.html
- 【BZOJ】2820: YY的GCD
[题意]给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对.T<=10^4,N,M<=10^7. [算法]数论(莫比乌 ...
- win10本地搭建php运行环境
一.下载搭建环境所需软件,安装顺序也要按照列表顺序安装 1.Vc2015(根据需要安装Vc2012或者Vc2015) Vc2015:https://www.microsoft.com/zh-CN/do ...
- Please move or remove them before you can merge
在使用git pull时,经常会遇到报错: Please move or remove them before you can merge 这是因为本地有修改,与云端别人提交的修改冲突,又没有merg ...