hdu5001 鞍山赛区网络赛 E题
来源:互联网 发布:周立功单片机 北京代理 编辑:程序博客网 时间:2024/04/28 15:45
从一个状态到下一个状态是存在一个转移矩阵的,但是转移矩阵应该不如直接模拟的复杂度低
每轮模拟后把特定点k清0,最后把k点以外的各个点的概率加和
原本考虑到矩阵的收敛性,添加了一个收敛性判断(精度要求比较高才能过),1.8s
后来去掉收敛性判断直接暴力反而更快,1.2s
可能是因为d本身比较小,精度要求有些高,没有明显的区别
#include<iostream>#include<algorithm>#include<iostream>#include<stdio.h>#include<string.h>#include<stdlib.h>#include<vector>#include<queue>#include<cmath>using namespace std;#define ll __int64#define inf 0x3f3f3f3fint dir[4][2]={0,1,0,-1,1,0,-1,0};int n,m,d;vector<int>bians[60];double map[60][2];int main(){ int T; scanf("%d",&T); while(T--) { int i,j,k,p,num; int ta,tb; int te,le; int flag; double ans; scanf("%d%d%d",&n,&m,&d); for(i=1;i<=n;i++) bians[i].clear(); for(i=1;i<=m;i++) { scanf("%d%d",&ta,&tb); bians[ta].push_back(tb); bians[tb].push_back(ta); } for(k=1;k<=n;k++) { for(i=1;i<=n;i++) map[i][0]=1.0/(double)n; map[k][0]=0; for(p=1;p<=d;p++) { te=p%2; le=(p+1)%2; for(i=1;i<=n;i++) map[i][te]=0; for(i=1;i<=n;i++) { num=bians[i].size(); for(j=0;j<num;j++) map[bians[i][j]][te]+=map[i][le]/(double)num; } map[k][te]=0; } ans=0; for(i=1;i<=n;i++) ans+=map[i][te]; printf("%.10lf\n",ans); } } return 0;}
0 0
- hdu5001 鞍山赛区网络赛 E题
- HDU 5001 Walk (2014年鞍山赛区网络赛E题)
- HDU 5001 Walk(2014年鞍山赛区网络赛E题)
- 2014网络赛 鞍山赛区
- acm_icpc网络赛第二站:鞍山赛区
- HDU5074 ACM-ICPC亚洲区域赛鞍山赛区现场赛E题 Hatsune Miku 二维DP
- HDU-5001 Walk 2014年鞍山网络赛E题
- 2014鞍山网络赛 E题||hdu 5001 概率dp
- HDU 5001 Walk(鞍山网络赛E题)
- 鞍山赛区D题
- 2014鞍山网络预选赛1005(概率DP)hdu5001
- HDU 4998 Rotate (2014年鞍山赛区网络赛B题)
- HDU 5003 Osu! (2014年鞍山赛区网络赛G题)
- HDU 5000 Clone (2014年鞍山赛区网络赛D题)
- HDU 5006 Resistance (2014年鞍山赛区网络赛J题)
- HDU 5002 Tree (2014年鞍山赛区网络赛F题)
- 2014ACM-ICPC赛区鞍山网络预赛
- 2014 鞍山 现场赛 E题题解
- 百度编辑器ueditor代码高亮效果前台不显示的解决方法
- MyEclipse安装SVN的插件
- Orcal数据库复习笔记
- signal(SIGCLD,SIG_IGN)
- 游戏架构
- hdu5001 鞍山赛区网络赛 E题
- 使用GDB调试程序
- 在编程语言中分频的计算方法
- iOS时间和时间戳的相互转换
- 常用sqlserver 语句命令
- centos的yum更新源问题
- CGAffineTransform 放射变换
- HDU5001--Walk
- java连接sql server2008 r2 错误Cannot create PoolableConnectionFactory 错误