UPC 2019年第二阶段我要变强个人训练赛第六场
题目描述
小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年第二阶段我要变强个人训练赛第六场的更多相关文章
- UPC 2019年第二阶段我要变强个人训练赛第十六场
传送门: [1]:UPC比赛场 [2]:UPC补题场 F.gu集合(数论) •题目描述 题目描述: Dew有一个长为n的集合S. 有一天,他想选k个不同的元素出来做游戏. 但是Dew只有两只手,所以他 ...
- 2019年第二阶段我要变强个人训练赛第八场 B.序列(seq)
传送门 B.序列(seq) •题目描述 给出一个长度为n的序列a,每次对序列进行一下的某一个操作. •输入 第一行两个整数n,q表示序列长度和操作个数. 接下来一行n个数,表示序列a. 接下来q行表示 ...
- UPC Contest RankList – 2019年第二阶段我要变强个人训练赛第十四场
A.JOIOJI •传送门 [1]:BZOJ [2]:洛谷 •思路 在一个区间(L,R]内,JOI的个数是相等的,也就是R[J]-L[J]=R[O]-L[O]=R[I]-L[I], 利用前缀和的思想, ...
- UPC Contest RankList – 2019年第二阶段我要变强个人训练赛第十六场
E: 飞碟解除器 •题目描述 wjyyy在玩跑跑卡丁车的时候,获得了一个飞碟解除器,这样他就可以免受飞碟的减速干扰了.飞碟解除器每秒末都会攻击一次飞碟,但每次只有p/q的概率成功攻击飞碟.当飞碟被成功 ...
- UPC Contest RankList – 2019年第二阶段我要变强个人训练赛第十五场
传送门 A: Colorful Subsequence •题意 给一个长为n的小写字母序列,从中选出字母组成子序列 问最多能组成多少种每个字母都不相同的子序列 (不同位置的相同字母也算是不同的一种) ...
- 备战省赛组队训练赛第六场(UPC)
传送门 外来博客题解1:戳这里 外来博客题解2:戳这里 CRWG全方位题解:戳这里
- 备战省赛组队训练赛第十七场(UPC)
upc:传送门 A: 题解[1] G: 题解[1] D,G,H,J,L 题解 by 鲁东大学
- 问题 L: An Invisible Hand - (2018年第二阶段个人训练赛第三场)
题目描述 There are N towns located in a line, conveniently numbered 1 through N. Takahashi the merchant ...
- 备战省赛组队训练赛第七场(UPC)
传送门 日文题解:戳这里
随机推荐
- 洛谷P1541 乌龟棋 [2010NOIP提高组]
P1541 乌龟棋 题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家 ...
- Python PEP8标准
1.编码 如无特殊情况,文件一律使用utf-8编码 如无特殊情况,文件头部必须添加# -*- coding:utf-8 -*- 标志 2.代码 统一使用四个空格缩进 每行代码不超过80个字符 自然语言 ...
- Spring_Aop_(二)
切面的优先级 @Order(1)注解 指定切面的优先级,值越小优先级越高 @Order(1) @Aspect @Component public class VlidationAspect { @Be ...
- .net WebServer示例及调用(接口WSDL动态调用 JAVA)
新建.asmx页面 using System; using System.Collections.Generic; using System.Linq; using System.Web; using ...
- objectarx之判断三点是否在一条直线上
bool CCommonFuntion::IsOnLine(AcGePoint2d& pt1, AcGePoint2d& pt2, AcGePoint2d& pt3){ AcG ...
- 使用 Windows 10 WSL 搭建 ESP8266 编译环境并使用 VSCODE 编程(一)(2019-08-23)
目录 使用 Windows 10 WSL 搭建 ESP8266 编译环境并使用 VSCODE 编程 安装前准备 安装 ESP8266 工具链 下载 ESP8266 SDK 编译 花絮 使用 Windo ...
- 两篇论文之CNN中正交操作
CNN的权值正交性和特征正交性,在一定程度上是和特征表达的差异性存在一定联系的. 下面两篇论文,一篇是在训练中对权值添加正交正则提高训练稳定性,一篇是对特征添加正交性的损失抑制过拟合. 第一篇:Ort ...
- 通过DataWorks数据集成归档日志服务数据至MaxCompute进行离线分析
通过DataWorks归档日志服务数据至MaxCompute 官方指导文档:https://help.aliyun.com/document_detail/68322.html但是会遇到大家在分区上或 ...
- NSString&NSMutableString常用操作梳理
http://www.cocoachina.com/ios/20150724/12722.html 上一篇梳理了NSArray&NSMutableArray常用操作,这次来梳理一下Object ...
- Java练习 SDUT-3849_分数四则运算
分数四则运算 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 编写程序,实现两个分数的加减法 Input 输入包含多行数 ...