高斯消元求期望!!

将n时间点构成2*(n-1)的环,每一点的期望值为dp[i]=dp[i+1]*p1+dp[i+2]*p2+……+dp[i+m]*pm+1.

这样就可以多个方程,利用高斯消元求解。

代码如下:

 #include<iostream>
#include<stdio.h>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<cstring>
#include<vector>
#include<queue>
#define MAX 200
#define eps 1e-8
using namespace std;
double p[MAX],a[MAX][MAX],ans[MAX];
int N,n,m,num[MAX],row,col,cnt;
int gauss()
{
int k,i,j;
for(i=,j=;i<row&&j<col;i++,j++){
int m=i;
for(k=i+;k<row;k++)
if(fabs(a[k][j])-fabs(a[m][j])>eps)
m=k;
if(fabs(a[m][j])<eps) return ;
if(m!=i)
for(k=;k<=col;k++)
swap(a[i][k],a[m][k]);
double aa=a[i][j];
for(k=i+;k<row;k++){
double bb=a[k][j]/aa;
for(int l=j;l<=col;l++){
a[k][l]-=bb*a[i][l];
}
}
}
for(i=col-;i>=;i--){
for(j=i+;j<col;j++)
a[i][col]-=a[i][j]*ans[j];
ans[i]=a[i][col]/a[i][i];
}
return ;
}
void bfs(int s)
{
queue<int>q;
memset(num,-,sizeof(num));
cnt=;
num[s]=cnt++;
q.push(s);
while(!q.empty()){
int t=q.front();
q.pop();
for(int i=;i<=m;i++){
if(fabs(p[i])<eps) continue;
int k=(i+t)%n;
if(num[k]==-){
num[k]=cnt++;
q.push(k);
}
}
}
}
int main(){
int t,i,j,x,y,d,tm,k;
scanf("%d",&t);
while(t--){
scanf("%d%d%d%d%d",&N,&m,&y,&x,&d);
for(i=;i<=m;i++){
scanf("%lf",&p[i]);
p[i]/=100.0;
}
if(x==y){
printf("0.00\n");
continue;
}
n=*N-;
if(d==) x=n-x;
bfs(x);
if(num[y]==-&&num[n-y]==-){
printf("Impossible !\n");
continue;
}
memset(a,,sizeof(a));
memset(ans,,sizeof(ans));
row=col=cnt;
for(i=;i<n;i++)
if(num[i]!=-){
a[num[i]][num[i]]=;
if(i==y||i==n-y){
ans[num[i]]=;
continue;
}
for(j=;j<=m;j++){
tm=(i+j)%n;
if(num[tm]!=-){
a[num[i]][num[tm]]-=p[j];
a[num[i]][cnt]+=j*p[j];
}
}
}
if(gauss()) printf("%.2lf\n",ans[num[x]]);
else printf("Impossible !\n");
}
return ;
}

hdu 4418 Time travel 概率DP的更多相关文章

  1. HDU 4418 Time travel 期望dp+dfs+高斯消元

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4418 Time travel Time Limit: 2000/1000 MS (Java/Othe ...

  2. HDU 4418 高斯消元法求概率DP

    把两种状态化成2*n-2的一条线上的一种状态即可.很容易想到. 高斯列主元法,不知为什么WA.要上课了,不玩了...逃了一次课呢.. #include <iostream> #includ ...

  3. HDU 4089 Activation(概率DP)(转)

    11年北京现场赛的题目.概率DP. 公式化简起来比较困难....而且就算结果做出来了,没有考虑特殊情况照样会WA到死的.... 去参加区域赛一定要考虑到各种情况.   像概率dp,公式推出来就很容易写 ...

  4. HDU - 5001 Walk(概率dp+记忆化搜索)

    Walk I used to think I could be anything, but now I know that I couldn't do anything. So I started t ...

  5. HDU 4405 Aeroplane chess (概率DP)

    题意:你从0开始,要跳到 n 这个位置,如果当前位置是一个飞行点,那么可以跳过去,要不然就只能掷骰子,问你要掷的次数数学期望,到达或者超过n. 析:概率DP,dp[i] 表示从 i  这个位置到达 n ...

  6. HDU 2955 Robberies 背包概率DP

    A - Robberies Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submi ...

  7. HDU-4418 Time travel 概率DP,高斯消元

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4418 题意:简单来说就是给你1个环(n - 1 , n - 2 …… 0 ,1 , 2 , 3 …… ...

  8. HDU 4576 Robot (概率DP)

    暴力DP求解太卡时间了...........写挫一点就跪了 //hdu robot #include <cstdio> #include <iostream> #include ...

  9. 2016ACM/ICPC亚洲区沈阳站H - Guessing the Dice Roll HDU - 5955 ac自动机+概率dp+高斯消元

    http://acm.hdu.edu.cn/showproblem.php?pid=5955 题意:给你长度为l的n组数,每个数1-6,每次扔色子,问你每个串第一次被匹配的概率是多少 题解:先建成ac ...

随机推荐

  1. mysql rand随机查询记录效率

    一直以为mysql随机查询几条数据,就用 SELECT * FROM `table` ORDER BY RAND() LIMIT 5 就可以了. 但是真正测试一下才发现这样效率非常低.一个15万余条的 ...

  2. VB最新使用教程

    Visual Basic是一种由 微软公司开发的结构化的.模块化的.面向对象的.包含协助开发环境的事件驱动为机制的可视化程序设计语言.这是一种可用于微软自家产品开发的语言.它源自于BASIC编程语言. ...

  3. 2016 Multi-University Training Contest 1 Chess 组合游戏+状压(预处理)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=5724 题意:一个n*20的棋盘,n <= 1000;棋盘上有一些棋子,每颗棋子只能移动到右边的第一个 ...

  4. unpipc.h&unpipc.c

    unpipc.h #ifndef _UNPIPC_H #define _UNPIPC_H #include <stdio.h> #include <unistd.h> #inc ...

  5. 【转载】 使用Anemometer基于pt-query-digest将MySQL慢查询可视化

    原文地址:使用Anemometer基于pt-query-digest将MySQL慢查询可视化 作者:84223932 本文主要介绍使用Anemometer基于pt-query-digest将MySQL ...

  6. ArcGIS For JavaScript API 默认参数

    “esri.config”的是在1.3版中的的“esriConfig”的替代品.如果您使用的是1.2或更低的版本,您应该参阅默认API v1.2和更低的配置.对于版本1.3或更高版本,您可以使用“es ...

  7. 2016 系统设计第一期 (档案一)jQuery radio 取值赋值

    MVC代码: <div class="form-group"> <label for="Gender" class="col-sm- ...

  8. Java程序员使用的20几个大数据工具

    最近我问了很多Java开发人员关于最近12个月内他们使用的是什么大数据工具. 这是一个系列,主题为: 语言 web框架 应用服务器 SQL数据访问工具 SQL数据库 大数据 构建工具 云提供商 今天我 ...

  9. [转载+原创]Emgu CV on C# (七) —— Emgu CV on 轮廓检测

    轮廓检测 对于查找轮廓我们一般要对图像Canny检测.但是对于很特殊的场合其实我们还可以直接对二值化的图像进行轮廓的提取. 关键函数 1. cvFindContours Retrieves conto ...

  10. PHP 中的BOM BUG

    对于PHP,一个小小让我不敢置信的事情很多,包括引用变量哪么迟钝,普通变量哪么牛B我己经很意外,甚至现在竟然出现了BOM头的BUG. 在PHP中,会引用很多小文件,include或require,哪么 ...