题目:

题目描述

上体育课的时候,小蛮的老师经常带着同学们一起做游戏。这次,老师带着同学们一起做传球游戏。游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同学可以把球传给自己左右的两个同学中的一个(左右任意),当老师在此吹哨子时,传球停止,此时,拿着球没有传出去的那个同学就是败者,要给大家表演一个节目。聪明的小蛮提出一个有趣的问题:有多少种不同的传球方法可以使得从小蛮手里开始传的球,传了m次以后,又回到小蛮手里。两种传球方法被视作不同的方法,当且仅当这两种方法中,接到球的同学按接球顺序组成的序列是不同的。比如有三个同学1号、2号、3号,并假设小蛮为1号,球传了3次回到小蛮手里的方式有1->2->3->1和1->3->2->1,共2种。

输入输出格式
输入格式:

输入文件ball.in共一行,有两个用空格隔开的整数n,m(3<=n<=30,1<=m<=30)。

输出格式:

输出文件ball.out共一行,有一个整数,表示符合题意的方法数。

输入输出样例
输入样例#1:

3 3

输出样例#1:

2

说明

40%的数据满足:3<=n<=30,1<=m<=20100%的数据满足:3<=n<=30,1<=m<=302008普及组第三题

测评网址:戳我访问
所属专栏:戳我访问
这题不是《信息学奥赛一本通》里的题目,是洛谷题库的P1057。
这题用动态规划来解,思路:由于可以传到i号节点的人分别为i-1和i+1,所以f[i][j]表示传了i次,传到了j手里的方案总数。
分析:
这里采用之前见到过的分析方法,如果你不知道,请访问:[戳我访问]
(http://blog.csdn.net/baidu_38496325/article/details/74316595)。
状态表达:f[i][j]表示传了i次,传到了j手里的方案总数。
状态转移:

if(j==1)f[i][j] = f[i-1][2]+f[i-1][n];
            else if(j==n)f[i][j] = f[i-1][n-1]+f[i-1][1];
            else f[i][j] = f[i-1][j-1]+f[i-1][j+1];

状态数量:nm
转移代价:O(1)
时间复杂度:O(n^2)
空间复杂度:O(nm)
代码:

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>int f[1001][1001];
int main()
{int n,m;std::cin>>n>>m;f[0][1] = 1;f[1][n] = 1;f[1][2] = 1;for(int i = 1;i<=m;i++)for(int j = 1;j<=n;j++)if(j==1)f[i][j] = f[i-1][2]+f[i-1][n];else if(j==n)f[i][j] = f[i-1][n-1]+f[i-1][1];else f[i][j] = f[i-1][j-1]+f[i-1][j+1];std::cout<<f[m][1];return 0;
}

转载于:https://www.cnblogs.com/powerLEO101/p/7695184.html

动态规划——洛谷_P1057传球游戏相关推荐

  1. 洛谷P1057 传球游戏(记忆化搜索)

    点我进入题目 题目大意:n个小孩围一圈传球,每个人可以给左边的人或右边的人传球,1号小孩开始,一共传m次,请问有多少种可能的路径使球回到1号小孩. 输入输出:输入n,m,输出路径的数量. 数据范围:4 ...

  2. 洛谷 1057——传球游戏(递推与递归二分)

    题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏. 游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同 ...

  3. 洛谷P1057传球游戏题解--zhengjun

    题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏. 游戏规则是这样的: n n n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传 ...

  4. 洛谷P1057传球游戏题解

    题目 这个题表面上看并不像DP,但是当我们看到方案数时,我们可能会想到什么??? 对,分类加法原理,在每一轮中,每一个点的方案数都要加上这个点左边的方案与右边的方案. 因此我们可以枚举,设一个DP数组 ...

  5. 洛谷 P2197 nim游戏

    洛谷 P2197 nim游戏 题目描述 甲,乙两个人玩Nim取石子游戏. nim游戏的规则是这样的:地上有n堆石子(每堆石子数量小于10000),每人每次可从任意一堆石子里取出任意多枚石子扔掉,可以取 ...

  6. 洛谷 P1558 色板游戏

    传送门:洛谷 P1558 色板游戏 算法分析:观察到数据范围:\(1\leq T\leq 30\) ,考虑使用二进制来进行状态压缩 将颜色\(x\)表示为 \(1<<(x-1)\) 即 \ ...

  7. 洛谷 P1129 矩阵游戏

    洛谷 P1129 矩阵游戏 题目链接 题目描述 小 Q 是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个 n×n 黑白方阵进行(如同国际象棋一般,只是颜色是 ...

  8. 洛谷 P3041 视频游戏的连击Video Game Combos(AC自动机+拓扑排序+数位DP)

    洛谷 P3041 视频游戏的连击Video Game Combos 难度一般,不过这个数位DP其实应该叫做记忆化搜索 题意:玩游戏时可以通过按键组合打出combo技能:然后是已知N个combo的按键方 ...

  9. 洛谷——P1000 超级玛丽游戏

    P1000 超级玛丽游戏 题目背景 本题是洛谷的试机题目,可以帮助了解洛谷的使用. 建议完成本题目后继续尝试P1001.P1008. 另外强烈推荐新用户必读贴 题目描述 超级玛丽是一个非常经典的游戏. ...

最新文章

  1. Linux grep,egrep及相应的正则表达式用法详解
  2. 人脸检测--S3FD: Single Shot Scale-invariant Face Detector
  3. 36氪研究 | 智慧零售行业研究报告
  4. pytorch 卷积分组
  5. 这个时代最重要的技能之一(数据分析)
  6. java生成带文字的图片_Java在背景图片上面加文字或者文字自动生成图片
  7. 001 makefile的使用
  8. 面向对象编程(OOP)特性 类和对象
  9. IT人 不要一辈子靠技术生存(转)
  10. 奥迪公布未来五年计划:将在电动汽车方面投资120亿欧元
  11. 大道至简——软件工程实践者的思想 读后感3
  12. Redhat 6.5安装JDK和Tomcat小记
  13. 金蝶徐少春与北大学生分享“最伟大的梦想”
  14. C#版常用设计模式入门
  15. 信道估计之MMSE算法
  16. 工作占用了太多私人时间_当公司老板过多占用你的个人时间,虽然不是什么大事但很想辞职怎么办?...
  17. java发布geoserver样式(sld样式)
  18. 整理了173家国企清单,跳槽必备!
  19. 解决Ubuntu远程连接mysql连不上的问题
  20. win10系统的应用商店不见了怎么安装回来

热门文章

  1. 基于Matlab和Wind SQL数据库的通用选股策略回测程序
  2. 跟我学交换机配置(四)
  3. c# 持续集成 单元测试_如何在不进行单元测试的情况下设置持续集成
  4. 性能测试回归测试_自动网站性能回归测试
  5. Oracle不加IP无法登录,Oracle 无法通过IP连接问题
  6. java mvc view_对Springmvc view层的理解
  7. ASP.NETCore学习记录(一)
  8. nginx tomcat https
  9. 苏宁零售云 App 稳定保障实践
  10. JQuery:JQuery 中的CSS()方法