Snakes and Ladders LightOJ - 1151


题意:

有100个格子,从1开始走,每次抛骰子走1~6,若抛出的点数导致走出了100以外,则重新抛一次。有n个格子会单向传送到其他格子,tp[i]表示从i传送到tp[i]。

1和100不会有传送,一个格子也不会有两种传送。问走到100的期望值。

\(dp[i]\)表示从格子i走出去的期望次数

分两种情况考虑

格子不可以传送 \(dp[i] = \frac{1}{6} \cdot \sum_{j=1}^{k}dp[i+j] + \frac{1}{6} \cdot \sum_{j=k+1}^{6}dp[i] + 1 (i+k=100)\)

格子可以传送 \(dp[i] = dp[nxt[i]]\)

化简得

格子不可以传送 \(k \cdot dp[i] - \sum_{j=1}^{k}dp[i+j] = 6\)

格子可以传送 \(dp[i] = dp[nxt[i]]\)

由于传送是无序的,所以无法使用递推来解决,只能列矩阵方程来高斯消元

#include<bits/stdc++.h>
#define LL long long
using namespace std;
const double eps = 1e-6;
const int N = 110;
int nxt[N];
double a[N][N];
int gauss(int n,int m){
int col,i,mxr,j,row;
for(row=col=1;row<=n&&col<=m;row++,col++){
mxr = row;
for(i=row+1;i<=n;i++)
if(fabs(a[i][col])>fabs(a[mxr][col]))
mxr = i;
if(mxr != row) swap(a[row],a[mxr]);
if(fabs(a[row][col]) < eps){
row--;
continue;
}
for(i=1;i<=n;i++)///消成上三角矩阵
if(i!=row&&fabs(a[i][col])>eps)
for(j=m;j>=col;j--)
a[i][j]-=a[row][j]/a[row][col]*a[i][col];
}
row--;
for(int i = row;i>=1;i--){///回代成对角矩阵
for(int j = i + 1;j <= row;j++){
a[i][m] -= a[j][m] * a[i][j];
}
a[i][m] /= a[i][i];
}
return row;
}
int main()
{
int T, cas = 1;
cin>>T;
while(T--){
int n;
scanf("%d",&n);
memset(nxt, 0, sizeof(nxt));
for(int i = 0;i < n;i++){
int x , y;
scanf("%d%d",&x,&y);
nxt[x] = y;
}
printf("Case %d: ",cas++);
memset(a, 0, sizeof(a));
for(int i = 1;i < 100;i++){
if(nxt[i]){
a[i][101] = 0;
a[i][i] = 1,a[i][nxt[i]] = -1;
}else{
int cnt = 0;
for(int j = 1;i + j <= 100 && j <= 6;j++){
cnt++;
a[i][i+j] = -1;
}
a[i][i] = cnt,a[i][101] = 6;
}
}
a[100][100] = 1,a[100][101] = 0;
int row = gauss(100,101);
printf("%.12lf\n",a[1][101]);
}
return 0;
}

Snakes and Ladders LightOJ - 1151( 概率dp+高斯消元)的更多相关文章

  1. LightOJ - 1151概率dp+高斯消元

    概率dp+高斯消元 https://vjudge.net/problem/LightOJ-1151 题意:刚开始在1,要走到100,每次走的距离1-6,超过100重来,有一些点可能有传送点,可以传送到 ...

  2. BZOJ_1778_[Usaco2010 Hol]Dotp 驱逐猪猡_概率DP+高斯消元

    BZOJ_1778_[Usaco2010 Hol]Dotp 驱逐猪猡_概率DP+高斯消元 题意: 奶牛们建立了一个随机化的臭气炸弹来驱逐猪猡.猪猡的文明包含1到N (2 <= N <= 3 ...

  3. 【bzoj1778】[Usaco2010 Hol]Dotp 驱逐猪猡 矩阵乘法+概率dp+高斯消元

    题目描述 奶牛们建立了一个随机化的臭气炸弹来驱逐猪猡.猪猡的文明包含1到N (2 <= N <= 300)一共N个猪城.这些城市由M (1 <= M <= 44,850)条由两 ...

  4. BZOJ3270 博物館 概率DP 高斯消元

    BZOJ3270 博物館 概率DP 高斯消元 @(XSY)[概率DP, 高斯消元] Description 有一天Petya和他的朋友Vasya在进行他们众多旅行中的一次旅行,他们决定去参观一座城堡博 ...

  5. BZOJ 3270: 博物馆 [概率DP 高斯消元]

    http://www.lydsy.com/JudgeOnline/problem.php?id=3270 题意:一张无向图,一开始两人分别在$x$和$y$,每一分钟在点$i$不走的概率为$p[i]$, ...

  6. 【BZOJ3640】JC的小苹果 概率DP+高斯消元

    [BZOJ3640]JC的小苹果 Description 让我们继续JC和DZY的故事. “你是我的小丫小苹果,怎么爱你都不嫌多!” “点亮我生命的火,火火火火火!” 话说JC历经艰辛来到了城市B,但 ...

  7. LightOJ 1151 Snakes and Ladders(概率DP + 高斯消元)

    题意:1~100的格子,有n个传送阵,一个把进入i的人瞬间传送到tp[i](可能传送到前面,也可能是后面),已知传送阵终点不会有另一个传送阵,1和100都不会有传送阵.每次走都需要掷一次骰子(1~6且 ...

  8. LightOJ - 1151 Snakes and Ladders(概率dp+高斯消元)

    有100个格子,从1开始走,每次抛骰子走1~6,若抛出的点数导致走出了100以外,则重新抛一次.有n个格子会单向传送到其他格子,G[i]表示从i传送到G[i].1和100不会有传送,一个格子也不会有两 ...

  9. 【概率DP/高斯消元】BZOJ 2337:[HNOI2011]XOR和路径

    2337: [HNOI2011]XOR和路径 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 682  Solved: 384[Submit][Stat ...

随机推荐

  1. 通过tomcat配置访问本机资源

    背景:在最近的项目中使用海康威视的摄像机,在项目预算中没有购买对应的硬盘录像机,但是由于客户需要能够进行视频的回放功能,所以直接采用了海康提供的视频管理客户端直接进行视频录像,然后保存在本机进行播放. ...

  2. Python简单线程间通信

    本节主要举一个简单的线程间通信的例子,利用线程安全的数据结构queue.Queue保存线程间通信的内容, import queue from threading import Thread from ...

  3. mysql基础 日期类型

  4. Docker自学纪实(三)Docker容器数据持久化

    谈起数据卷 我一直觉得是个枯燥无聊的话题 但是通过今天的实操和阅读 我发现其实并不是 其实就像走夜路 没有光明,第一次都是恐惧 但是如果走的次数多了 或者静下心来去克制恐惧 也许就会驾轻就熟或者等到黎 ...

  5. webpack最小化lodash

    lodash作为一个比较常用的前端开发工具集,在使用webpack进行vendor分离的实践中,会遇到将整个lodash文件分离到vendor.js的问题.这样会使vendor.js文件变得特别大. ...

  6. 使用MyEclipse/Eclipse修改项目名称报Can't convert argument: null!

    报错: java.lang.IllegalArgumentException: Can't convert argument: null! 方法/步骤    报错原因:使用MyEclipse修改项目名 ...

  7. PHP脚本执行效率性能检测之WebGrind的使用

    webgrind这个性能检测是需要xdebug来配合,因为webgrind 进行性能检测分析就是通过xdebug生成的日志文件进行编译分析的 那么这就需要们配置好xdebug,这个一般的php 版本都 ...

  8. Mysql:case when then end 的用法

    0.创建一张数据表 表名为 test_when_case CREATE TABLE `test_when_case` ( `id` int(11) unsigned NOT NULL AUTO_INC ...

  9. JZOJ 5914. 盟主的忧虑

    Description     江湖由 N 个门派(2≤N≤100,000,编号从 1 到 N)组成,这些门派之间有 N-1 条小道将他们连接起来,每条道路都以“尺”为单位去计量,武林盟主发现任何两个 ...

  10. Git-Git分支

    代码管理之殇 分支是代码管理的利器.如果没有有效的分支管理,代码管理就适应不了复杂的开发过程和项目的需要.在实际的项目实践中,单一分支的单线开发模式还远远不够,因为: 成功的软件项目大多要经过多个开发 ...