[递推]D. 【例题4】传球游戏
D
.
【
例
题
4
】
传
球
游
戏
D. 【例题4】传球游戏
D.【例题4】传球游戏




题目解析
设
t
(
i
,
j
)
t(i,j)
t(i,j)为过了
j
j
j轮,轮到
i
i
i手上的总方案数,而小蛮的编号这里设为
t
(
1
,
j
)
t(1,j)
t(1,j).
因为如果只有
1
1
1人,那么可以得出:
t
(
1
,
0
)
=
1
t(1,0)=1~~~~~~~~~~~~~~~
t(1,0)=1 (不经过任何传递 )
同题目所述,是可以向左和右传递,那么就可以得出递推式
t
(
i
,
j
)
=
t
(
i
−
1
,
j
−
1
)
+
t
(
i
+
1
,
j
−
1
)
t(i,j)=t(i-1,j-1)+t(i+1,j-1)
t(i,j)=t(i−1,j−1)+t(i+1,j−1)
j
−
1
j-1
j−1是因为少了由
i
−
1
i-1
i−1或
i
+
1
i+1
i+1到
i
i
i的轮数.
但是,这是一个环,我们要考虑边界问题:
所以当
i
=
n
i=n
i=n时,就是由
t
(
i
−
1
,
j
−
1
)
,
t
(
1
,
j
−
1
)
t(i-1,j-1),t(1,j-1)
t(i−1,j−1),t(1,j−1)传递来的
同理,当
i
=
1
i=1
i=1时,就是由
t
(
n
,
j
−
1
)
,
t
(
i
+
1
,
j
−
1
)
t(n,j-1),t(i+1,j-1)
t(n,j−1),t(i+1,j−1)传递来的
那么就能得出递推式(边界问题略):
t
(
i
,
j
)
=
{
t
(
1
,
0
)
=
1
t
(
i
,
j
)
=
t
(
i
−
1
,
j
−
1
)
+
t
(
i
+
1
,
j
−
1
)
;
t(i,j) = \left\{\begin{matrix} & t(1,0)=1\\ & t(i,j)=t(i-1,j-1)+t(i+1,j-1);\\ \end{matrix}\right.
t(i,j)={t(1,0)=1t(i,j)=t(i−1,j−1)+t(i+1,j−1);
Code
注意循坏变量!与解析相反!
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int n, m;
ll t[35][35];
int main ()
{
scanf ("%d%d", &n, &m);
t[1][0] = 1; // 不经过任何传递
for (int i = 1; i <= m; ++ i)
{
for (int j = 1; j <= n; ++ j)
{
int a = j - 1, b = j + 1;
if (j == 1) a = n; // 边界
if (j == n) b = 1; // 边界
t[j][i] = t[a][i - 1] + t[b][i - 1]; // 递推式
}
}
printf ("%lld ", t[1][m]);
return 0;
}
[递推]D. 【例题4】传球游戏的更多相关文章
- CH3401 石头游戏(矩阵快速幂加速递推)
题目链接:传送门 题目: 石头游戏 0x30「数学知识」例题 描述 石头游戏在一个 n 行 m 列 (≤n,m≤) 的网格上进行,每个格子对应一种操作序列,操作序列至多有10种,分别用0~9这10个数 ...
- CH 3401 - 石头游戏 - [矩阵快速幂加速递推]
题目链接:传送门 描述石头游戏在一个 $n$ 行 $m$ 列 ($1 \le n,m \le 8$) 的网格上进行,每个格子对应一种操作序列,操作序列至多有 $10$ 种,分别用 $0 \sim 9$ ...
- [递推]C. 【例题3】数的划分
C . [ 例 题 3 ] 数 的 划 分 C. [例题3]数的划分 C.[例题3]数的划分 题目描述 将整数 n n n 分成 k k k 份,且每份不能为空,任意两个方案不相同(不考虑顺序). 例 ...
- [递推] A. 【例题1】错排问题
A. [例题1]错排问题 题目描述 求多少个 n n n个数的排列 A A A ,满足对于任意的 i ( 1 ≤ i ≤ n ) i(1 ≤ i ≤ n) i(1≤i≤n) 使 A i ≠ i Ai ...
- Crash的游戏 [组合+递推]
题面 思路 问题转化 这个问题的核心在于,我们需要把"加入一个球.拿出一个球"这两个操作转化一下 因为显然两个操作同时进行的话,我们没有办法从单纯的组合意义去分析 我们首先把$m$ ...
- 紫书 例题 9-9 UVa 10003 (区间dp+递推顺序)
区间dp,可以以一个区间为状态,f[i][j]是第i个切点到第j个切点的木棍的最小费用 那么对于当前这一个区间,枚举切点k, 可以得出f[i][j] = min{dp(i, k) + dp(k, j) ...
- 紫书 例题 9-4 UVa 116 ( 字典序递推顺序)
这道题在递推方式和那个数字三角形有一点相像,很容易推出来 但是这道题要求的是字典序,这里就有一个递推顺序的问题 这里用逆推,顺推会很麻烦,为什么呢? 如果顺推的话,最后一行假设有种情况是最小值,那么你 ...
- 洛谷 P1057 传球游戏 解题报告
P1057 传球游戏 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏. 游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹 ...
- NOIP 2008 传球游戏
洛谷 P1057 传球游戏 洛谷传送门 JDOJ 1536: [NOIP2008]传球游戏 T3 JDOJ传送门 Description 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次, ...
随机推荐
- PAA子公司在印度印度成立
近日PAA房产又有大动作啦!在一片期待中,印度分公司正式成立!这是集团继泰国.越南.韩国.上海.成都.中国香港.中国台湾等分公司成立之后的又一扛鼎力作,更是PAA集团全球化战略布局的重要举措. 印度分 ...
- Mybatis-06 动态Sql
Mybatis-06 动态Sql 多对一处理 多个学生,对应一个老师 对于学生这边而言,关联多个学生,关联一个老师 [多对一] 对于老师而言,集合,一个老师又很多学生 [一对多] 1.创建数据库 2. ...
- Laravel Queues 队列应用实战
队列,顾名思义,排着队等着做事情.在生活场景中,凡是排队的人,都是带有目的性的.要完成某件事情,才去排队的,要不没有谁会闲到排队玩儿.而在软件应用层面,队列是什么,队列有什么优点,我们什么时候需要用队 ...
- Github上优秀的.NET Core开源项目的集合
内容包括:库.工具.框架.模板引擎.身份认证.数据库.ORM框架.图片处理.文本处理.机器学习.日志.代码分析.教程等. Github地址:https://github.com/jasonhua95/ ...
- VMware安装centos.6.8无法访问主机的问题
安装步骤 点击下一步,如下图: 接上图: 接上图: 接上图 接上图: 接上图: 接上图: 接上图 接上图: 接上图: 接上图: 接上图: 接上图: 接上图: 点击 完成: 启动虚拟机进行安装: 发现报 ...
- List转String数组 collection.toArray(new String[0])中new String[0]的语法解释
Collection的公有方法中,toArray()是比较重要的一个. 但是使用无参数的toArray()有一个缺点,就是转换后的数组类型是Object[]. 虽然Object数组也不是不能用,但当你 ...
- 微信小程序:删除时提示是否删除
代码如下: wx.showModal({ title: '提示', content: '确定要删除吗?', success: function (sm) { if (sm.confirm) { // ...
- Gradle 差异化构建
Compile 默认的依赖方式,任何情况下都会依赖. Provided 只提供编译时依赖,打包时不会添加进去. Apk 只在打包Apk包时依赖,这个应该是比较少用到的. TestCompile 只在测 ...
- go语言-csp模型-并发通道
[前言]go语言的并发机制以及它所使用的CSP并发模型 一.CSP并发模型 CSP模型是上个世纪七十年代提出的,用于描述两个独立的并发实体通过共享的通讯 channel(管道)进行通信的并发模型. C ...
- 力扣496. 下一个更大元素 I
原题 1 class Solution: 2 def nextGreaterElement(self, nums1: List[int], nums2: List[int]) -> List[i ...