light oj 1151 - Snakes and Ladders 高斯消元+概率DP
思路:
在没有梯子与蛇的时候很容易想到如下公式:
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的更多相关文章
- LightOJ 1151 - Snakes and Ladders 高斯消元+概率DP
首先来个期望的论文,讲的非常好,里面也提到了使用线性方程组求解,尤其适用于有向图的期望问题. 算法合集之<浅析竞赛中一类数学期望问题的解决方法> http://www.lightoj.co ...
- Light OJ 1272 Maximum Subset Sum 高斯消元 最大XOR值
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u011686226/article/details/32337735 题目来源:problem=12 ...
- BZOJ 1778: [Usaco2010 Hol]Dotp 驱逐猪猡 [高斯消元 概率DP]
1778: [Usaco2010 Hol]Dotp 驱逐猪猡 题意:一个炸弹从1出发p/q的概率爆炸,否则等概率走向相邻的点.求在每个点爆炸的概率 高斯消元求不爆炸到达每个点的概率,然后在一个点爆炸就 ...
- BZOJ 2337: [HNOI2011]XOR和路径 [高斯消元 概率DP]
2337: [HNOI2011]XOR和路径 题意:一个边权无向连通图,每次等概率走向相连的点,求1到n的边权期望异或和 这道题和之前做过的高斯消元解方程组DP的题目不一样的是要求期望异或和,期望之间 ...
- Broken robot CodeForces - 24D (三对角矩阵简化高斯消元+概率dp)
题意: 有一个N行M列的矩阵,机器人最初位于第i行和第j列.然后,机器人可以在每一步都转到另一个单元.目的是转到最底部(第N个)行.机器人可以停留在当前单元格处,向左移动,向右移动或移动到当前位置下方 ...
- [luogu2973]driving out the piggies 驱逐猪猡【高斯消元+概率DP】
看到题面的那一刻,我是绝望的ORZ 图论加概率期望加好像不沾边的高斯消元???我人直接傻掉 还没学过概率期望的我果断向题解屈服了(然后还是傻掉了两节课来找线性方程.. Description 奶牛们建 ...
- UVa 10828 Back to Kernighan-Ritchie 高斯消元+概率DP
题目来源:UVa 10828 Back to Kernighan-Ritchie 题意:从1開始 每次等概率从一个点到和他相邻的点 有向 走到不能走停止 求停止时每一个点的期望 思路:写出方程消元 方 ...
- bzoj 2337 高斯消元+概率DP
题目大意: 每条路径上有一个距离值,从1走到N可以得到一个所有经过路径的异或和,求这个异或和的数学期望 这道题直接去求数学期望的DP会导致很难列出多元方程组 我们可以考虑每一个二进制位从1走到N的平均 ...
- 【BZOJ-3143】游走 高斯消元 + 概率期望
3143: [Hnoi2013]游走 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2264 Solved: 987[Submit][Status] ...
随机推荐
- 自定义ToolBar
一.Toolbar的简介 Toolbar 是 android 5.0 引入的一个新控件,Toolbar出现之前,我们很多时候都是使用ActionBar以及ActionActivity实现顶部导航栏的, ...
- perl6中的q/qq/qx/qqx
q不内插 qq内插 qx不内插 qqx内插
- Python自动化运维 - Django(二)Ajax基础 - 自定义分页
Ajax基础 AJAX 不是新的编程语言,而是一种使用现有标准的新方法. AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下. 什么是Ajax AJAX = 异步 Java ...
- 【设计模式】原型模式(Prototype)
摘要: 1.本文将详细介绍原型模式的原理和实际代码中特别是Android系统代码中的应用. 纲要: 1. 引入原型模式 2. 原型模式的概念及优缺点介绍 3. 原型模式对拷贝的使用 4. 原型模式在A ...
- java===java习题---Josephu问题
package testbotoo; /** * * @author */ public class Demo4 { public static void main(String[] args) { ...
- 【bzoj4567】SCOI2016背单词
题号莫名喜感. 倒序建Trie,dfs这棵Trie,贪心一下,每次按照size排序计算贡献就好. #include<bits/stdc++.h> #define N 100010 #def ...
- SVN服务的配置与管理
引言 没当服务器重启,SVN服务都会停止,每次都得重启一下服务,为了解决这样的问题.有了下文. 一.配置自启动服务 sc create SVNService binpath="E:\svn\ ...
- [New learn]GCD其他方法的使用
https://github.com/xufeng79x/GCDDemo 1.简介 在前面的两篇博文中我介绍了GCD的一般使用方法和死锁的分析调查.本博文中继续讲解GCD的其他比较常用的几个使用方法. ...
- FineReport——JS二次开发(局部刷新)
在FR中,可以通过在form表单设置多个报表模板,然后通过对某一模板刷新实现局部刷新的功能,在cpt模板中,由于只存在一个模板,所以无法实现局部刷新. 其实,最好的局部刷新办法是自定义一个页面,然后添 ...
- JQuery判断一个元素下面是否有内容或者有某个标签
网站开发时,我们时常需要把没有内容的标签隐藏或者去掉.在用JQ有两种好的解决办法: 一.判断文本是否为空 var jqObj = $(this);if(jqObj.text().trim()){ // ...