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] ...
随机推荐
- hdu 3371(prim算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3371 Connect the Cities Time Limit: 2000/1000 MS (Jav ...
- php伪协议
文件包含函数:include.require.include_once.require_once.highlight_file .show_source .readfile .file_get_con ...
- python基础===isinstance() 函数,判断一个对象是否是一个已知的类型
isinstance(object, classinfo) object -- 实例对象. classinfo -- 可以是直接或间接类名.基本类型或者有它们组成的元组. >>>a ...
- python基础===python os.path模块
os.path.abspath(path) #返回绝对路径 os.path.basename(path) #返回文件名 os.path.commonprefix(list) #返回list(多个路径) ...
- web.py输出中文字符串乱码问题的解决
web.py中文字符串网页显示乱码的解决 #!/usr/bin/env python # encoding: utf-8 import weburls = ( '/', 'index')class i ...
- sql server查看创建表的代码,表定义
1.查看建表语句在“对象资源管理器”中找到要导出的表,选中该表并单击右键,“编写表脚本为(S)”/“CREATE到(C)”/“新查询编辑器窗口”即可查看该表的建表语句.2.导出建表语句在“对象资源管理 ...
- [ Python ] 基本数据类型及属性(上篇)
1. 基本数据类型 (1) 数字 - int (2) 字符串 - str (3) 布尔值 - bool 2. int 类型中重要的方法 (1) int 将字符串转 ...
- CSS中cursor属性给标签加上小手形状
HTML/CSS 2012-08-10 CSS,标签 我们发现a标签在网页中有一个值得注意的地方,即鼠标移到a标签上光标会变成一只小手的图标,移出a标签后又恢复为默认箭头. 如今,JS在网页中的功能越 ...
- jmeter压力测试案例实战
1. 测试目标地址:http://www.cnblogs.com/ 2. 1秒内有100个用户同时访问,看性能如何 3. 步骤 线程组.http请求.查看结果树.聚合报告 添加http请求如下: ...
- thinkphp5 消息队列thinkphp-queue扩展
1.简介 thinkphp-queue是thinkphp的一个第三方扩展, 内置了 Redis,Database,Topthink ,Sync这四种驱动,推荐使用redis 2. 下载 和安装 com ...