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] ...
随机推荐
- ie8下a标签中的图片出现边框
1.ie8下a标签中的图片出现边框 <a href="#"><img src="horse.jpg"></a> 效果如图所示 ...
- java===java习题---Josephu问题
package testbotoo; /** * * @author */ public class Demo4 { public static void main(String[] args) { ...
- python基础===【字符串】所有相关操作
#字符串的相关操作 #基本操作 #+ 字符串连接操作 str1 = '来是come走是go' str2 = '点头yes摇头no' result = str1 + str2 print(result) ...
- BZOJ 4516: [Sdoi2016]生成魔咒——后缀数组、并查集
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4516 题意 一开始串为空,每次往串后面加一个字符,求本质不同的子串的个数,可以离线.即长度为 ...
- Pylot网站Web服务器性能和负载压力测试-适用Windows可绘制图表
为了能够准确地评估网站服务器对网络流量的承受能力,我们一般会采取模拟网站用户访问,通过不断地增加并发数,延长访问时长,从而最终得出网站Web服务器的性能和负载能力.当然也可以通过Web压力测试,来完善 ...
- Python爬虫数据处理
一.首先理解下面几个函数 设置变量 length()函数 char_length() replace() 函数 max() 函数1.1.设置变量 set @变量名=值 set @address='中国 ...
- 阿里CDN核心技术解密
1. 阿里CDN组件分层 其中应用层主要用到的技术有负载均衡和缓存, 负载均衡包括全局负载均衡和本地负载均衡; 缓存通过HTTP缓存服务器Swift做HTTP缓存. 全局负载均衡以DNS服务器Phar ...
- Oracle数据库共享内存分配不足问题的解决
问题: ORA-: unable to allocate bytes of shared memory ("shared pool,)","session param v ...
- 微信小程序 - 分包加载
小程序开发大家都知道,对主包的大小进行了限制,从最初的1M变成了现再的2M,一般情况下是够用了:但是偶尔可能会出现超出2M的可能,我们可以对小程序进行分包加载. 1.小程序分包加载 a. 某些情况下, ...
- Linux之父Linus的8个趣闻轶事
博客中的文章均为 meelo 原创,请务必以链接形式注明本文地址 <只是为了好玩:Linux之父林纳斯自传>是一本很古老的书了,2001年就有了中文版,在2014的时候图灵图书又把它重新翻 ...