高斯消元求期望!!

将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. Delphi XE5教程3:实例程序

    内容源自Delphi XE5 UPDATE 2官方帮助<Delphi Reference>,本人水平有限,欢迎各位高人修正相关错误! 也欢迎各位加入到Delphi学习资料汉化中来,有兴趣者 ...

  2. sqlalchemy - day1

    一.Create engine Database url规则: dialect+driver://username:password@host:port/database echo: True表示cm ...

  3. 一个订单相关的存储过程(MySQL)

    BEGIN DECLARE currentDate VARCHAR(15) ;/*当前日期,有可能包含时分秒 */ DECLARE maxNo INT DEFAULT 0 ; /* 离现在最近的满足条 ...

  4. 查看表空间信息SQL集合

    1.查看表空间的名称及大小 SELECT t.tablespace_name as "表空间名", )), ) AS "所占物理空间M" FROM dba_ta ...

  5. 在线压缩zip

    <?php //验证密码 $password = "test"; ?> <html> <head> <meta http-equiv=&q ...

  6. CentOS 6.2编译安装Nginx1.2.0+MySQL5.5.25+PHP5.3.13+博客系统WordPress3.3.2

    说明: 操作系统:CentOS 6.2 32位 系统安装教程:CentOS 6.2安装(超级详细图解教程): http://www.osyunwei.com/archives/1537.html 准备 ...

  7. 【学习总结】iOS 数据保存几种方式总结

    在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题.将数据保存到本地,能够让程序的运行更加流畅,不会出现让人厌恶的菊花形状,使得用户体验更好.下面介绍一下数据保存的方式: NSKeyedAr ...

  8. virtualbox usb连接问题解决

    生命在于折腾... 神奇的liinux... ubuntu 14.04 LTS sudo apt-get install virtualbox -y 然后建好虚拟机之后(windows也好,linux ...

  9. 微信消息处理JAXP-sax解析

    package cn.zhaokai.sax; import java.io.IOException; import java.io.InputStream; import java.io.Print ...

  10. ASP.NET Web – 输入的有效性验证

    下面这个示例显示了与文本框textFirstname相关的验证控件RequiredFieldValidator.所有的验证控件都有ErrorMessage和ControlToValidate属性.如果 ...