思路:

在没有梯子与蛇的时候很容易想到如下公式:

dp[i]=1+(∑dp[i+j])/6

但是现在有梯子和蛇也是一样的,初始化p[i]=i;

当有梯子或蛇时转移为p[a]=b;

这样方程变为:

dp[i]=1+(∑dp[p[i+j]])/6

再就是注意当i+j>100时,停在原地不变。

代码如下:

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define M 105
#define eps 1e-6
using namespace std;
double ans[M],an[M][M];
int p[M];
void GAUSS()
{
int i,j,t,k;
for(i=;i<=;i++){
t=i;
for(j=i+;j<=;j++)
if(an[t][i]<an[j][i]) t=j;
if(t!=i){
for(j=;j<=;j++)
swap(an[i][j],an[t][j]);
}
if(fabs(an[i][i])<eps) continue;
for(j=i+;j<=;j++){
if(fabs(an[j][i])>eps){
double tt=an[j][i]/an[i][i];
for(k=i;k<=;k++)
an[j][k]=an[j][k]-an[i][k]*tt;
}
}
}
for(i=;i>=;i--){
for(j=;j>i;j--){
an[i][]-=an[i][j]*ans[j];
}
if(fabs(an[i][i])>eps)
ans[i]=an[i][]/an[i][i];
if(fabs(ans[i])<eps) ans[i]=0.0;
}
}
void solve()
{
memset(ans,,sizeof(ans));
memset(an,,sizeof(an));
for(int i=;i<=;i++){
an[i][i]=an[i][]=6.0;
for(int j=;j<=;j++){
if(i+j>) an[i][i]-=1.0;
else an[i][p[i+j]]+=-1.0; //感开始没有+,一直错啊…………
}
}
GAUSS();
}
int main()
{
int t,ca=,n,m,a,b;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
for(int i=;i<=;i++) p[i]=i;
for(int i=;i<n;i++){
scanf("%d %d",&a,&b);
p[a]=b;
}
solve();
printf("Case %d: %.8lf\n",++ca,ans[]);
}
return ;
}

light oj 1151 - Snakes and Ladders 高斯消元+概率DP的更多相关文章

  1. LightOJ 1151 - Snakes and Ladders 高斯消元+概率DP

    首先来个期望的论文,讲的非常好,里面也提到了使用线性方程组求解,尤其适用于有向图的期望问题. 算法合集之<浅析竞赛中一类数学期望问题的解决方法> http://www.lightoj.co ...

  2. Light OJ 1272 Maximum Subset Sum 高斯消元 最大XOR值

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u011686226/article/details/32337735 题目来源:problem=12 ...

  3. BZOJ 1778: [Usaco2010 Hol]Dotp 驱逐猪猡 [高斯消元 概率DP]

    1778: [Usaco2010 Hol]Dotp 驱逐猪猡 题意:一个炸弹从1出发p/q的概率爆炸,否则等概率走向相邻的点.求在每个点爆炸的概率 高斯消元求不爆炸到达每个点的概率,然后在一个点爆炸就 ...

  4. BZOJ 2337: [HNOI2011]XOR和路径 [高斯消元 概率DP]

    2337: [HNOI2011]XOR和路径 题意:一个边权无向连通图,每次等概率走向相连的点,求1到n的边权期望异或和 这道题和之前做过的高斯消元解方程组DP的题目不一样的是要求期望异或和,期望之间 ...

  5. Broken robot CodeForces - 24D (三对角矩阵简化高斯消元+概率dp)

    题意: 有一个N行M列的矩阵,机器人最初位于第i行和第j列.然后,机器人可以在每一步都转到另一个单元.目的是转到最底部(第N个)行.机器人可以停留在当前单元格处,向左移动,向右移动或移动到当前位置下方 ...

  6. [luogu2973]driving out the piggies 驱逐猪猡【高斯消元+概率DP】

    看到题面的那一刻,我是绝望的ORZ 图论加概率期望加好像不沾边的高斯消元???我人直接傻掉 还没学过概率期望的我果断向题解屈服了(然后还是傻掉了两节课来找线性方程.. Description 奶牛们建 ...

  7. UVa 10828 Back to Kernighan-Ritchie 高斯消元+概率DP

    题目来源:UVa 10828 Back to Kernighan-Ritchie 题意:从1開始 每次等概率从一个点到和他相邻的点 有向 走到不能走停止 求停止时每一个点的期望 思路:写出方程消元 方 ...

  8. bzoj 2337 高斯消元+概率DP

    题目大意: 每条路径上有一个距离值,从1走到N可以得到一个所有经过路径的异或和,求这个异或和的数学期望 这道题直接去求数学期望的DP会导致很难列出多元方程组 我们可以考虑每一个二进制位从1走到N的平均 ...

  9. 【BZOJ-3143】游走 高斯消元 + 概率期望

    3143: [Hnoi2013]游走 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2264  Solved: 987[Submit][Status] ...

随机推荐

  1. 编写jquery Plugin

    编写jquery插件的原则 1.给$.fn绑定函数,实现插件的代码逻辑 2.插件函数最后要return this,以支持链式调用 3.插件函数要有默认值,绑定在$.fn.<pluginName& ...

  2. Perl6 Bailador框架(6):获取用户输入

    use v6; use Bailador; get '/' => sub { ' <html> <head><title></title>< ...

  3. vue基本介绍

    https://cn.vuejs.org/v2/guide/ Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上 ...

  4. [Leetcode Week14]Construct Binary Tree from Inorder and Postorder Traversal

    Construct Binary Tree from Inorder and Postorder Traversal 题解 原创文章,拒绝转载 题目来源:https://leetcode.com/pr ...

  5. fork与vfork区别

    1. 地址空间各段拷贝: fork: 内核为子进程生成新的地址空间结构,拷贝父进程的代码段,数据空间,堆,栈到自身的地址空间,但注意:子进程的代码段并不会分配物理空间,而是指向父进程的代码段物理空间, ...

  6. mysql 1366的错误 字符集错误解决方案

    最近用mysqlalchmy的时候遇到了 sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (1366, "Incorrec ...

  7. clearcase command (linux 常用命令)

    http://publib.boulder.ibm.com/infocenter/cchelp/v7r0m0/index.jsp?topic=/com.ibm.rational.clearcase.h ...

  8. Linux下undefined reference to ‘pthread_create’问题解决 zz

    接触了Linux系统编程中的线程编程模块,可gcc sample.c(习惯把书上的sample代码写进sample.c文件中)出现“undefined reference to ‘pthread_cr ...

  9. 深入解析当下大热的前后端分离组件django-rest_framework系列二

    视图三部曲 一部曲 · 使用混合(mixins) 上一节的视图部分: from rest_framework.views import APIView from rest_framework.resp ...

  10. python 函数的几个属性 func_name, func_code等

    直接见代码: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/07/25 10:14 def add(x=0, y=1): & ...