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

题意:10*10的方格,每掷一次骰子向前走相应的步数,给n组数,x,y 表示从x可以到直接传送到y。

可以直接简化为1*100的模型,网上的一些递推公式看不太懂。每次掷骰子的时候跟前几个题是一样的,dp[i] = dp[i+1]/6 + dp[i+2]/6 + … +d[i+6]/6 +1 ; 不过要注意下边界。化简一下就可以得到 6*dp[i] - dp[i+1] - … -dp[i+6] = 6 ; 

对于可以传送的点 : dp[i] = dp[next[i]] ; 化简得到 dp[i] -next[dp[i]] = 0;

然后就是高斯消元的内容了:

高斯消元传送门:https://www.cnblogs.com/Robert-Yuan/p/4621481.html  这个dalao讲的还是挺好的。

用上面两个化简之后的式子可以写出线性方程组的增广矩阵,套用一下高斯消元的板子就可以了。

本题增广矩阵的写法:

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;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值