长沙理工大学第十二届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和出度为 ...
随机推荐
- SQL Server 2008自动备份数据库
1.在电脑开始菜单中选择“SQL Server Management Studio”双击.在出现的界面中点击“连接”按钮. 2.在出现的“ Microsoft SQL Server Managemen ...
- libc、glibc与gcc
转http://blog.163.com/dragon_sjl@126/blog/static/100473339201107101517380/ 1.gcc(gnu collect compiler ...
- 2049: [Sdoi2008]Cave 洞穴勘测
2049: [Sdoi2008]Cave 洞穴勘测 Time Limit: 10 Sec Memory Limit: 259 MB Submit: 7475 Solved: 3499 [Submi ...
- JVM学习十:JVM之垃圾收集器及GC参数
接近两个月左右没有写博客,主要是因为小孩过来后,回家比较忙,现在小孩端午送回家了,开始继续之前的JVM学习之路,前面学习了GC的算法和种类,那么本章则是基于算法来产生实际的用途,即垃圾收集器. 一.堆 ...
- Javascript动态绑定
<div onclick="test()"></div> <script> function test(){ //code } </scr ...
- 【CODEVS】1034 家园
[算法]网络流-最大流(dinic) [题解] 飞船有可承载人数限制,地球为源点,月球为汇点,人像水流一样从以飞船上限为容量的边流向汇点. 人在各站点都面临着上船与否的选择,难以用DP解决最优策略,于 ...
- 【代码优化】调用optional delegates的最佳方法
[转载请注明出处]http://www.cnblogs.com/lexingyu/p/3932475.html 本文是以下两篇blog的综合脱水,感谢两位作者为解放码农生产力所做的深入思考=.= Sm ...
- 小程序制作中 一个奇怪的bug
事情是这样的:原一个购物车 合并本地数据和服务器 数据方法如下 ,正常测试没有问题,当每次重新登录,会调用到这个方法,就会莫名其妙的卡主,debug 发现 a1.length =77731508 导致 ...
- Python作业选课系统(第六周)
作业需求: 角色:学校.学员.课程.讲师.完成下面的要求 1. 创建北京.上海 2 所学校 2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开 ...
- BERT(Bidirectional Encoder Representations from Transformers)理解
BERT的新语言表示模型,它代表Transformer的双向编码器表示.与最近的其他语言表示模型不同,BERT旨在通过联合调节所有层中的上下文来预先训练深度双向表示.因此,预训练的BERT表示可以通过 ...