题目大意

略...

题解

开始两个人一定是一个向右走一个向下走,向右走的人最终会走到(n-1,m),向下走的人一定会走到(n,m-1)。
那么不考虑重复的话总的路径数就是从(1,2)到(n-1,m)的路径数*从(2,1)到(n,m-1)的路径数,这个用 dp 就可以解决,dp 方程是dp[ i ][ j ] = dp[ i - 1 ][ j ] + dp[ i ][ j - 1 ]
其中 dp[i][j]表示从起点到(i,j)的方案数。
考虑两条相交的路径,找到第一个交点,然后让这两个人在这个交点相交后走对方的路径。也就是第一步向下的人走到(n-1,m),另一个人走到(n,m-1)。
对于任何一条相交的路径,我们都可以进行如上转化,所以相交路径的方案数就是从(1,2)到(n,m-1)的路径数*从(2,1)到(n-1,m)的路径数.。同样用 dp 解决。
 
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#define ll long long
using namespace std; inline int read()
{
int sum = ,p = ;
char ch = getchar();
while(ch < '' || ch > '')
{
if(ch == '-')
p = -;
ch = getchar();
}
while(ch >= '' && ch <= '')
{
(sum *= ) += ch - '';
ch = getchar();
}
return sum * p;
} const ll mod = ;
int n,m;
int mp[][];
ll dp[][];
ll ans1,ans2,ans3,ans4; int main()
{
freopen("path.in","r",stdin);
freopen("path.out","w",stdout);
n = read(),m = read();
for(int i = ; i <= n; i++)
for(int j = ; j <= m; j++)
{
scanf("%1d",&mp[i][j]);
mp[i][j] ^= ;
}
if(mp[][] == || mp[][] == )
{
puts("");
return ;
}
dp[][] = ;
for(int i = ; i <= n; i++)
for(int j = ; j <= m; j++)
{
if(mp[i][j])
dp[i][j] = (dp[i - ][j] +dp[i][j - ])%mod;
}
ans1 = dp[n][m - ];
ans2 = dp[n - ][m];
memset(dp,,sizeof(dp));
dp[][] = ;
for(int i = ;i <= n;i++)
for(int j = ;j <= m;j++)
{
if(mp[i][j])
dp[i][j] = (dp[i - ][j] + dp[i][j - ]) % mod;
}
ans3 = dp[n][m - ];
ans4 = dp[n - ][m];
printf("%lld",(ans1 * ans4 % mod - ans2 * ans3 % mod + mod)%mod);
return ;
}
 

8.10-Day2T2 吃喝大法好的更多相关文章

  1. Java SE之 Eclipse错误: 找不到或无法加载主类或项目无法编译10种解决大法!【摘抄】

    声明一下:此BUG确实经常困扰我许久,今日遇到很强大的一套解决办法,又怕原博主的网页以后查找不到,故此摘抄copy一份,望得各方侵权一事而谅解. 传送门先行送上:http://blog.csdn.ne ...

  2. Eclipse错误: 找不到或无法加载主类或项目无法编译10种解决大法

    1.在src文件夹上点右键-Build Path-Use as Source Folder,重新进行编译,一切正常了.2.在Eclipse工程文件夹上点右键-Refresh,重新编译,一功OK(这个方 ...

  3. 让人恼火的经历——手机H5网页被注入广告

    你的网站是否在尾部出现了让人恼火的广告? 这次我算是遇到了这些流氓的广告.那么就让我们一步步攻克这些恼火的广告吧. 问题描述 某一天下午开始,我们制作的网站就开始被各种广告注入,类似上图这种. 还有在 ...

  4. P1888 三角函数

    题目描述 输入一组勾股数a,b,c(a≠b≠c),用分数格式输出其较小锐角的正弦值.(要求约分.) 输入输出格式 输入格式: 一行,包含三个数,即勾股数a,b,c(无大小顺序). 输出格式: 一行,包 ...

  5. 【转】eclipse找不到或无法加载主类

    Eclipse错误: 找不到或无法加载主类或项目无法编译10种解决大法! 今天启动项目,又遇到找不到或无法加载主类的情况,清除项目后无法编译,bin文件夹下没有.class文件,至少遇到3次这个问题了 ...

  6. [北京周六见]10 家创业公司联合招 Partner-均融资 1 到 3 轮-薪酬股权可观-本周六举行欢迎来坐坐吃喝谈天 - V2EX

    [北京周六见]10 家创业公司联合招 Partner-均融资 1 到 3 轮-薪酬股权可观-本周六举行欢迎来坐坐吃喝谈天 - V2EX [北京周六见]10 家创业公司联合招 Partner-均融资 1 ...

  7. 前端构建大法 Gulp 系列 (一):为什么需要前端构建

    系列目录 前端构建大法 Gulp 系列 (一):为什么需要前端构建 前端构建大法 Gulp 系列 (二):为什么选择gulp 前端构建大法 Gulp 系列 (三):gulp的4个API 让你成为gul ...

  8. iOS审核秘籍】提审资源检查大法

    iOS审核秘籍]提审资源检查大法 2015/11/27 阅读(752) 评论(1) 收藏(6) 加入人人都是产品经理[起点学院]产品经理实战训练营,BAT产品总监手把手带你学产品点此查看详情! 本篇主 ...

  9. Linux就这个范儿 第10章 生死与共的兄弟

    Linux就这个范儿 第10章 生死与共的兄弟 就说Linux系统的开机.必须经过加载BIOS.读取MBR.Boot Loader.加载内核.启动init进程并确定运行等级.执行初始化脚本.启动内核模 ...

随机推荐

  1. CentOS 7在执行yum操作时 报错

    CentOS 7在执行yum操作时, 报错:Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch ...

  2. jsonp 完成跨域请求注意事项

    jsonp 不支持post方式请求跨域数据 可以使用get方式请求 !jsonp 不支持post方式请求跨域数据 可以使用get方式请求 !jsonp 不支持post方式请求跨域数据 可以使用get方 ...

  3. 杭电oj2037——今年暑假不AC(java实现)

    思路:标准贪心 先把所有思路列出来: 1.优先选择开始时间最早的,经分析,不可行 2.优先选择持续时间最短的,经分析,不可行 3.优先选择结束时间最早的,经分析,可行 然后根据第三种思路实现代码就好 ...

  4. 二维数组填充datagridview

    public void TwoDArrayShowINDatagridview(string[,] arr) { DataTable dt = new DataTable(); for (int co ...

  5. idea AutoWired 报红

  6. 原生js来写获取元素距离顶部距离,以及滚动条滚动指定距离和时间控制

    这是我在写vue项目里封装的一个公共js类 里面还有一些其他的方法,一并拿过来了 class Public { isDesktop(){ //判断是否为pc端 return (window.scree ...

  7. mybatis-plus - insert

    一. insert 首先看一下 insert.java 的代码: /** * <p> * 根据 ID 删除 * </p> * * @author hubin * @since ...

  8. jQuery---jQuery对象与DOM对象的区别

    jQuery对象与DOM对象的区别 1. DOM对象:使用JavaScript中的方法获取页面中的元素返回的对象就是dom对象.2. jQuery对象:jquery对象就是使用jquery的方法获取页 ...

  9. 解决wxpy获取不到指定群聊对象的情况

    我们可以通过Bot.friends 以及Bot.groups 来获取到所有的好友以及聊天群,这里需要注意的是,聊天群需要保存到通讯录中,不然可能会出现找不到聊天群的情况. 摘自:http://www. ...

  10. 剑指offer系列——59/60.按之字形顺序打印二叉树/把二叉树打印成多行

    Q:请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. A:BFS,偶数层reverse vector&l ...