题目链接:点击这里

题目大意:
一张 nnn 行 mmm 列的网格图,图中的有些格子上面有障碍物,但保证 (1,1)(1,1)(1,1) 和 (n,m)(n,m)(n,m) 上面都没有障碍物。在 (1,1)(1,1)(1,1) 处有两只乌龟,都想要去(n,m)(n,m)(n,m) 。乌龟每次都可以向下或者向右走一格,前提是格子上没有任何障碍物。要求两只乌龟在前往 (n,m)(n,m)(n,m) 的路途中不可以相遇,即除了起点和终点,他们的路径没有其他公共点。求出从起点到终点的不同路径对数。答案对 109+710^9+7109+7 取模。

题目分析:
注意 LGVLGVLGV 引理的起点和终点也不能有交集
所以可以把起点分成两个: a1=(1,2),a2=(2,1)a_1=(1,2),a_2=(2,1)a1​=(1,2),a2​=(2,1) ,把终点分成两个 b1=(n−1,m),b2=(n,m−1)b_1=(n-1,m),b_2=(n,m-1)b1​=(n−1,m),b2​=(n,m−1)
所以就可以构造 LGVLGVLGV 引理的矩阵了
M=(e(a1,b1)e(a1,b2)e(a2,b1)e(a2,b2))M= \begin{pmatrix} e(a_1,b_1) & e(a_1,b_2)\\ e(a_2,b_1) & e(a_2,b_2)\\ \end{pmatrix}M=(e(a1​,b1​)e(a2​,b1​)​e(a1​,b2​)e(a2​,b2​)​)
所以可以开两个数组 dp1[i][j],dp2[i][j]dp1[i][j],dp2[i][j]dp1[i][j],dp2[i][j] 分别表示 a1,a2a_1,a_2a1​,a2​ 到 (i,j)(i,j)(i,j) 的路径数
因为限制了移动方向所以可以 O(nm)O(nm)O(nm) 递推出这两个数组
这样题目所求就是 dp1[n−1][m]∗dp2[n][m−1]−dp1[n][m−1]∗dp2[n−1][m]dp1[n-1][m]*dp2[n][m-1]-dp1[n][m-1]*dp2[n-1][m]dp1[n−1][m]∗dp2[n][m−1]−dp1[n][m−1]∗dp2[n−1][m]

具体细节见代码:

//#pragma GCC optimize(2)
//#pragma GCC optimize("Ofast","inline","-ffast-math")
//#pragma GCC target("avx,sse2,sse3,sse4,mmx")
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<set>
#include<map>
#include<stack>
#include<queue>
#define ll long long
#define inf 0x3f3f3f3f
//#define int  ll
#define endl '\n'
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0)
using namespace std;
int read()
{int res = 0,flag = 1;char ch = getchar();while(ch<'0' || ch>'9'){if(ch == '-') flag = -1;ch = getchar();}while(ch>='0' && ch<='9'){res = (res<<3)+(res<<1)+(ch^48);//res*10+ch-'0';ch = getchar();}return res*flag;
}
const int maxn = 3e3+5;
const int mod = 1e9+7;
const double pi = acos(-1);
const double eps = 1e-8;
int n,m,dp1[maxn][maxn],dp2[maxn][maxn];
char mp[maxn][maxn];
int main()
{n = read(),m = read();for(int i = 1;i <= n;i++) scanf("%s",mp[i]+1);dp1[1][1] = dp2[1][1] = 1;for(int i = 1;i <= n;i++)for(int j = 2;j <= m;j++) if(mp[i][j] == '.') dp1[i][j] = (dp1[i-1][j]+dp1[i][j-1])%mod;for(int i = 2;i <= n;i++)for(int j = 1;j <= m;j++) if(mp[i][j] == '.') dp2[i][j] = (dp2[i-1][j]+dp2[i][j-1])%mod;cout<<((ll)dp1[n-1][m]*dp2[n][m-1]%mod-(ll)dp1[n][m-1]*dp2[n-1][m]%mod+mod)%mod<<endl;return 0;
}

CodeForces 348D Turtles(LGV引理)相关推荐

  1. Codeforces 348D Turtles LGV

    Turtles 利用LGV转换成求行列式值. #include<bits/stdc++.h> #define LL long long #define fi first #define s ...

  2. CodeForces 348D Turtles(LGV定理)题解

    题意:两只乌龟从1 1走到n m,只能走没有'#'的位置,问你两只乌龟走的时候不见面的路径走法有几种 思路:LGV定理模板.但是定理中只能从n个不同起点走向n个不同终点,那么需要转化.显然必有一只从1 ...

  3. 模板:LGV引理(线性代数)

    所谓LGV引理,就是解决LGV问题的引理. (逃) 前言 上联:古有学完SAM学PAM: 下联:今有学完Polya学LGV: 横批:小清新. 常被用于有向图不交路径计数问题.(废话) 这个东西是真的不 ...

  4. 【2022国赛模拟】无损加密——LGV引理、状压DP

    原创题无来源 题目描述 题解 首先把问题稍作简化,我们可以最后把行列式乘上所有 dkd_kdk​ 的积的 nnn 次方,这样前面的过程就不用考虑 dkd_kdk​ 了,暴力也只需要变动 [lk,rk] ...

  5. 2021牛客暑期多校训练营9 Cells(LGV引理,FFT)

    2021牛客暑期多校训练营9 Cells(LGV引理,FFT) 题目链接 题意 在一个无限大的xyxyxy​坐标轴上,求从A={(0,a1),(0,a2),...,(0,an)}A=\{(0,a_1) ...

  6. 【luogu P6657】【模板】LGV 引理(行列式)(数学)(线性代数)

    [模板]LGV 引理 题目链接:luogu P6657 题目大意 给你一个二维图,然后分别有 m 个棋子,分别要从 (ai,1) 走到 (bi,n),只能从 (x,y) 走到 (x+1,y) 和 (x ...

  7. CF348D LGV引理

    题意: 给定一张图,图上存在障碍点,两个人从(1,1)(1,1)(1,1)出发,只能向上或向右走,走到(n,m)(n,m)(n,m)且路径不相交的方案数 数据范围:1≤n,m≤30001\le n,m ...

  8. 【luogu P7736】路径交点(LGV引理)(DP)(矩阵乘法)

    路径交点 题目链接:luogu P7736 题目大意 给你一个分层图,第一层和最后一层的点数相同. 然后要从第一层的 n 个点走到最后一层的 n 个点,每个点到达的位置互不相同. 然后问你偶数个交点的 ...

  9. 2018牛客多校第一场 Monotonic Matrix (LGV引理)

    链接:https://www.nowcoder.com/acm/contest/139/A 来源:牛客网 题目描述 Count the number of n x m matrices A satis ...

最新文章

  1. 小马拉大车,无线网络优化
  2. 太阳能控制器原理图_太阳能人体感应壁灯的电路设计
  3. MyEclipse中快捷键的使用
  4. envi最大似然分类_闲谈最大后验概率估计(MAP estimate)amp;极大似然估计(MLE)和机器学习中的误差分类...
  5. 与机器学习算法有关的数据结构
  6. 从零开始学wordpress 之四
  7. Spring声明式事务配置的两种策略SpringAop和Bean后处理器的代理BeanNameAutoProxyCreator
  8. 昂达平板不能开机刷机_手把手教你平板电脑刷机方法
  9. 数据处理可视化的最有价值的 50 张图 (上)
  10. 论文阅读:Improved Denoising Diffusion Probabilistic Models
  11. 六成应用不需要程序员,一大批程序员会失业?
  12. 无需工具:腾讯视频.qlv格式转换成.mp4格式的方法!
  13. 如何面对高水平的破解组织 谈暴力破解应对
  14. 电机控制系统php,步进电机调速控制系统资料(原理图+单片机源码)
  15. Windows Server 2019 英文语系更新笔记
  16. 网络技术摘抄(入门需知)
  17. 数据处理如同流水——介绍下偶的数据流引擎Samsara
  18. 深度解析| CRM的三重境界、两种关系、两个问题
  19. 【摘抄】Serverless概念与说明,Baas和Faas
  20. BERGER LAHR施耐德运动控制器维修BLC382TCNUC1S概述

热门文章

  1. 机器学习知识总结 —— 14. 什么是支持向量机(基础概念、梯度下降、软间隔、硬间隔)?
  2. Python除法使用注意
  3. 内蒙古2019计算机考试安排,2019年下半年内蒙古计算机软考考试报名通知
  4. 拿捏了,这样的购物体验才深得用户心
  5. java通过超链接下载模板
  6. 第五代脉冲电子围栏领衔周界安防行业大变革
  7. spi通信的理解(NSS,SSI,SSM位,贼恶心)
  8. 在CorelDRAW2019创建对称绘图模式
  9. 删除文件恢复软件?只需2个步骤
  10. L3-3 神坛 (30分)