传送门

A.上学路线

 题目描述
小D从家到学校的道路结构是这样的:由n条东西走向和m条南北走向的道路构成了一个n*m的网格,每条道路都是单向通行的(只能从北向南,从西向东走)。
已知小D的家在网格的左上角,学校在网格的右下角。
问小D从他的家到学校一共有多少种不同的上学路线。
(配图如下)
输入
两个正整数n和m,意义如题目所述。 输出
小D上学路线数量,结果对1000000007取余。

题目描述

 样例输入

 样例输出
 

样例输入输出

思路一(递推):

 ll dp[maxn][maxn];///dp[i][j]:从点(i,j)到(n,m)的路线个数

  初始化dp[n][m]=1;

AC代码:

 #include<bits/stdc++.h>
using namespace std;
const int maxn=1e3+;
#define ll long long
#define mem(a,b) memset(a,b,sizeof(a))
const int MOD=; int n,m;
ll dp[maxn][maxn]; ll Solve()
{
mem(dp,);
for(int i=n;i >= ;--i)
{
for(int j=m;j >= ;--j)
{
if(i == n && j == m)
dp[i][j]=;
else
dp[i][j]=(dp[i+][j]+dp[i][j+])%MOD;
}
}
return dp[][]%MOD;
}
int main()
{
scanf("%d%d",&n,&m);
printf("%lld\n",Solve()); return ;
}

思路二(记忆化搜索 by mxl):

  由题意可知,一共向下走了 n-1 步;

  那么对于第 i 列可能向下走连续的 0,1,2,...,n-1 步;

ll dp[maxn][maxn];///dp[i][j]:第i列向下走连续的j步含有的总方案数

  初始化dp为-1;

AC代码:

 #include<bits/stdc++.h>
using namespace std;
const int maxn=1e3+;
#define ll long long
#define mem(a,b) memset(a,b,sizeof(a))
const int MOD=; int n,m;
ll dp[maxn][maxn];///dp[i][j]:第i列向下走连续的j步含有的总方案数 ll DFS(int cur,int cnt)///第cur列最多向下走cnt步
{
if(cur > m)
return cnt == ? :; if(dp[cur][cnt] != -)///记忆化搜索
return dp[cur][cnt]; ll ans=;
for(int i=;i <= cnt;++i)///第cur列向下走i步
ans=(ans+DFS(cur+,cnt-i))%MOD; dp[cur][cnt]=ans;
return ans;
}
ll Solve()
{
mem(dp,-);
return DFS(,n-)%MOD;
}
int main()
{
scanf("%d%d",&n,&m);
printf("%lld\n",Solve()); return ;
}

  

UPC 2019年第二阶段我要变强个人训练赛第六场的更多相关文章

  1. UPC 2019年第二阶段我要变强个人训练赛第十六场

    传送门: [1]:UPC比赛场 [2]:UPC补题场 F.gu集合(数论) •题目描述 题目描述: Dew有一个长为n的集合S. 有一天,他想选k个不同的元素出来做游戏. 但是Dew只有两只手,所以他 ...

  2. 2019年第二阶段我要变强个人训练赛第八场 B.序列(seq)

    传送门 B.序列(seq) •题目描述 给出一个长度为n的序列a,每次对序列进行一下的某一个操作. •输入 第一行两个整数n,q表示序列长度和操作个数. 接下来一行n个数,表示序列a. 接下来q行表示 ...

  3. UPC Contest RankList – 2019年第二阶段我要变强个人训练赛第十四场

    A.JOIOJI •传送门 [1]:BZOJ [2]:洛谷 •思路 在一个区间(L,R]内,JOI的个数是相等的,也就是R[J]-L[J]=R[O]-L[O]=R[I]-L[I], 利用前缀和的思想, ...

  4. UPC Contest RankList – 2019年第二阶段我要变强个人训练赛第十六场

    E: 飞碟解除器 •题目描述 wjyyy在玩跑跑卡丁车的时候,获得了一个飞碟解除器,这样他就可以免受飞碟的减速干扰了.飞碟解除器每秒末都会攻击一次飞碟,但每次只有p/q的概率成功攻击飞碟.当飞碟被成功 ...

  5. UPC Contest RankList – 2019年第二阶段我要变强个人训练赛第十五场

    传送门 A: Colorful Subsequence •题意 给一个长为n的小写字母序列,从中选出字母组成子序列 问最多能组成多少种每个字母都不相同的子序列 (不同位置的相同字母也算是不同的一种) ...

  6. 备战省赛组队训练赛第六场(UPC)

    传送门 外来博客题解1:戳这里 外来博客题解2:戳这里 CRWG全方位题解:戳这里

  7. 备战省赛组队训练赛第十七场(UPC)

    upc:传送门 A: 题解[1] G: 题解[1] D,G,H,J,L 题解 by 鲁东大学

  8. 问题 L: An Invisible Hand - (2018年第二阶段个人训练赛第三场)

    题目描述 There are N towns located in a line, conveniently numbered 1 through N. Takahashi the merchant ...

  9. 备战省赛组队训练赛第七场(UPC)

    传送门   日文题解:戳这里

随机推荐

  1. 【水滴石穿】react-native-ble-demo

    项目的话,是想打开蓝牙,然后连接设备 点击已经连接的设备,我们会看到一些设备 不过我这边在开启蓝牙的时候报错了 先放作者的项目地址: https://github.com/hezhii/react-n ...

  2. PLAY2.6-SCALA(十二) 表单的处理

    一.表单处理流程如下 1.定义一个表单,在这里表单最多有22个字段 import play.api.data._ import play.api.data.Forms._ //要使用验证和约束 imp ...

  3. layer弹出图片的问题

    转载:https://blog.csdn.net/qq_41815146/article/details/81141088 layer下载地址:http://layer.layui.com/ jQue ...

  4. kubernetes1.5新特性跟踪

    Kubernetes发布历史回顾 Kubernetes 1.0 - 2015年7月发布 Kubernetes 1.1 - 2015年11月发布 Kubernetes 1.2 - 2016年3月发布 K ...

  5. 软件测试 → 第一章 基础-> 软件与软件危机

    一. 软件概念 1.软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合.2.程序是按事先设计的功能和性能要求执行的指令序列.3.数据是使程序能正常操纵信息的数据结构. ...

  6. python HTTP请求过程的两种常见异常

  7. Xcode 中的Bundle versions string, short 和 Bundle version 区别

    Bundle version is the internal version number of your app. Short version string is the publically vi ...

  8. SGU 101 Domino【欧拉路径】

    题目链接: http://acm.sgu.ru/problem.php?contest=0&problem=101 题意: N个多米诺骨牌,每个骨牌左右两侧分别有一个0~6的整数(骨牌可以旋转 ...

  9. 洛谷P2512 [HAOI2008]糖果传递

    //不开long long见祖宗!!! #include<bits/stdc++.h> using namespace std; long long n,ans,sum; ],s[]; i ...

  10. uva 11174 Stand in a Line (排列组合)

    UVa Online Judge 训练指南的题目. 题意是,给出n个人,以及一些关系,要求对这n个人构成一个排列,其中父亲必须排在儿子的前面.问一共有多少种方式. 做法是,对于每一个父节点,将它的儿子 ...