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】传球游戏的更多相关文章

  1. CH3401 石头游戏(矩阵快速幂加速递推)

    题目链接:传送门 题目: 石头游戏 0x30「数学知识」例题 描述 石头游戏在一个 n 行 m 列 (≤n,m≤) 的网格上进行,每个格子对应一种操作序列,操作序列至多有10种,分别用0~9这10个数 ...

  2. CH 3401 - 石头游戏 - [矩阵快速幂加速递推]

    题目链接:传送门 描述石头游戏在一个 $n$ 行 $m$ 列 ($1 \le n,m \le 8$) 的网格上进行,每个格子对应一种操作序列,操作序列至多有 $10$ 种,分别用 $0 \sim 9$ ...

  3. [递推]C. 【例题3】数的划分

    C . [ 例 题 3 ] 数 的 划 分 C. [例题3]数的划分 C.[例题3]数的划分 题目描述 将整数 n n n 分成 k k k 份,且每份不能为空,任意两个方案不相同(不考虑顺序). 例 ...

  4. [递推] 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 ...

  5. Crash的游戏 [组合+递推]

    题面 思路 问题转化 这个问题的核心在于,我们需要把"加入一个球.拿出一个球"这两个操作转化一下 因为显然两个操作同时进行的话,我们没有办法从单纯的组合意义去分析 我们首先把$m$ ...

  6. 紫书 例题 9-9 UVa 10003 (区间dp+递推顺序)

    区间dp,可以以一个区间为状态,f[i][j]是第i个切点到第j个切点的木棍的最小费用 那么对于当前这一个区间,枚举切点k, 可以得出f[i][j] = min{dp(i, k) + dp(k, j) ...

  7. 紫书 例题 9-4 UVa 116 ( 字典序递推顺序)

    这道题在递推方式和那个数字三角形有一点相像,很容易推出来 但是这道题要求的是字典序,这里就有一个递推顺序的问题 这里用逆推,顺推会很麻烦,为什么呢? 如果顺推的话,最后一行假设有种情况是最小值,那么你 ...

  8. 洛谷 P1057 传球游戏 解题报告

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

  9. NOIP 2008 传球游戏

    洛谷 P1057 传球游戏 洛谷传送门 JDOJ 1536: [NOIP2008]传球游戏 T3 JDOJ传送门 Description ​ 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次, ...

随机推荐

  1. javascript change array length methods

    javascript change array length methods Array 改变数组长度的方法 push, pop shift, unshift, splice, fill, 不改变数组 ...

  2. Vue Learning Paths

    Vue Learning Paths Vue Expert refs https://vueschool.io/articles/vuejs-tutorials/exciting-new-featur ...

  3. how to input special keyboard symbol in macOS(⌘⇧⌃⌥)

    how to input special keyboard symbol in macOS(⌘⇧⌃⌥) emoji ctrl + command + space / ⌘⇧⌃ ⌘⇧⌃ Character ...

  4. js web简单的路由管理器

    灵感来自此博客和此库 index.html <!DOCTYPE html> <html lang="en"> <head> <meta c ...

  5. Nestjs 验证对象数组

    route @Patch(':id') patch(@Param('id') id: string, @Body() removeEssayDto: RemoveEssayDto) { return ...

  6. betterscroll上拉加载

    mounted(){ var that=this; setTimeout(()=>{ let scroll = new BScroll(document.getElementById('wrap ...

  7. [转]ROS中使用message_filters进行多传感器消息同步

    转:http://www.rosclub.cn/post-1030.html 最近实验室老师在做一个多传感器数据采集实验,涉及到了消息同步.所以就学习了ROS官网下的消息同步工具message_fil ...

  8. java中this和super的用法及区别

    this 用法1:代表当前对象本身 用法2:方法形参和类成员变量重名,用this进行区别 class demo{ private int age = 10; public int getAge(int ...

  9. Vue学习笔记-API调试工具--->国产apipost按装(比postman好按装好用)

    一  使用环境: windows 7 64位操作系统 二   Vue学习笔记-API调试工具--->apipost按装 1.下载: https://www.apipost.cn/ (比postm ...

  10. su: Authentication failure解决方法

    su命令不能切换root,提示su: Authentication failure,需要sudo passwd root一次之后,下次再su的时候只要输入密码就可以成功登录.