传送门

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. 【风马一族_Android】无线连接|调试Android手机

    原文来自:http://www.cnblogs.com/sows/p/6269396.html   (博客园的)风马一族 侵犯版本,后果自负 2017-01-10 15:03:31 准备阶段 1. 软 ...

  2. golang的包规则

    1.包声明:文件所在目录,有利于源码整体迁移. 2.包导入:4种方式. ---------------------------------------------------------------- ...

  3. Nginx设置静态页面压缩和缓存过期时间的方法 (转)

    使用nginx服务器的朋友可能都知道需要设置html静态页面缓存与页面压缩与过期时间的设置了,下面我来给各位同学介绍一下配置方法,包括对ico,gif,bmp,jpg,jpeg,swf,js,css, ...

  4. TP3.2的URL重写省略index.php问题

    1. 在tp3框架的配置文件里,明确指定了路由的格式,这个配置位于thinkPHP文件夹下的conf文件夹里的convention.php中,修改以下字段 'URL_MODEL' => 2, # ...

  5. 【JZOJ4831】【NOIP2016提高A组集训第3场10.31】方程式

    题目描述 数据范围 解法 枚举根之后,使用大除法. 代码 #include<stdio.h> #include<iostream> #include<string.h&g ...

  6. python 并发之进程

    一.什么是进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实 ...

  7. 大话鸿蒙操作系统(一)-- 先聊聊 Fuchsia OS

    大话鸿蒙操作系统(一) 第一篇先不聊鸿蒙操作系统,聊聊 Google 的新系统 Fuchsia OS. 先看看 Fuchsia OS 介绍. 为什么 Google 要造新的 Fuchsia OS 操作 ...

  8. Person Re-identification 系列论文笔记(四):Re-ID done right: towards good practices for person re-identification

    Re-ID done right: towards good practices for person re-identification Almazan J, Gajic B, Murray N, ...

  9. IP应用加速 – DCDN迈入全栈新篇章

    4月11日,第七届"亚太内容分发大会"暨CDN峰会国际论坛中,阿里云资深技术专家姚伟斌发布了DCDN子产品IP应用加速(IPA).IPA是基于阿里云CDN本身的资源优化,对传输层( ...

  10. @hdu - 6687@ Rikka with Stable Marriage

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个稳定婚姻匹配问题,其中第 i 个男生与第 j 个女生之间 ...