码迷,mamicode.com
首页 > 其他好文 > 详细

线性dp

时间:2018-06-19 20:13:21      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:closed   include   也有   gif   简单的   个人   play   简单   close   

  线性dp应该是dp中比较简单的一类,不过也有难的。(矩乘优化递推请出门右转)

  

  传球游戏:https://www.luogu.org/problemnew/show/P1057

  题意概述:一些人围成一个圈,每次可以把球传给左右两个人,求m步后回到第一个人手里的方案数。

  这题大概也可以矩乘?不过递推就可以了,$dp[i][j]$表示传了j步,现在在i手里的方案数。转移:

  $dp[i][j]=dp[i+1][j-1]+dp[i-1][j-1]$

  边界再处理一下就行了。

   技术分享图片
# include <cstdio>
# include <iostream>

using namespace std;

int n,m;
long long dp[31][31];

int main()
{
    scanf("%d%d",&n,&m);
    dp[1][0]=1;
    for (int i=1;i<=m;i++)
    {
        dp[1][i]=dp[2][i-1]+dp[n][i-1];
        dp[n][i]=dp[n-1][i-1]+dp[1][i-1];
        for (int j=2;j<n;j++)
            dp[j][i]=dp[j-1][i-1]+dp[j+1][i-1];
    }
    printf("%d",dp[1][m]);
    return 0;
}
传球游戏

 

线性dp

标签:closed   include   也有   gif   简单的   个人   play   简单   close   

原文地址:https://www.cnblogs.com/shzr/p/9200727.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!