题目

\(n*m\)的地图,计算从\((n,1)\)到第\(x\)列的第\(y\)行的路径条数\(\bmod k\) ,

走过的点不能再走,转弯只能向右转。转弯完之后必须往前走一格


分析

可以发现,走的过程类似于一个矩形,这可以列一个\(dp\)方程





关于滚动数组采用枚举行数加列数再枚举行数,接着枚举左下角得到右上角的坐标

然后在走的时候要判断这一横竖是否有障碍


代码

#include <cstdio>
#define rr register
using namespace std;
int n,m,mod,zy,zx,rw[101][101],cl[101][101],dp[2][4][101][101][101];
inline void Mo(int &A,int x,int y){A=x+y>=mod?x+y-mod:x+y;}
inline bool cor(int x,int y){return x==zx&&y==zy;}
signed main() {
scanf("%d%d%d%d%d",&n,&m,&mod,&zy,&zx);
for (rr int i=1;i<=n;++i)
for (rr int j=1;j<=m;++j){
rr char c=getchar();
while (c!='+'&&c!='*') c=getchar();
rw[i][j]=rw[i][j-1]+(c=='*'),
cl[i][j]=cl[i-1][j]+(c=='*');
}
for (rr int S=2;S<=n+m;++S)
for (rr int i=1;i<S;++i){
rr int j=S-i;
for (rr int lx=1;lx<=zx&&lx<=n-i+1;++lx)
for (rr int ly=1;ly<=zy&&ly<=m-j+1;++ly){
rr int rx=lx+i-1,ry=ly+j-1;
if (rx<zx||ry<zy) continue;
Mo(dp[S&1][0][lx][ly][rx],dp[(S&1)^1][0][lx][ly][rx],(rw[lx][ry]==rw[lx][ly-1])*(dp[(S&1)^1][1][lx+1][ly][rx]+cor(lx,ry)));
Mo(dp[S&1][1][lx][ly][rx],dp[(S&1)^1][1][lx][ly][rx-1],(cl[rx][ry]==cl[lx-1][ry])*(dp[(S&1)^1][2][lx][ly][rx]+cor(rx,ry)));
Mo(dp[S&1][2][lx][ly][rx],dp[(S&1)^1][2][lx][ly+1][rx],(rw[rx][ry]==rw[rx][ly-1])*(dp[(S&1)^1][3][lx][ly][rx-1]+cor(rx,ly)));
Mo(dp[S&1][3][lx][ly][rx],dp[(S&1)^1][3][lx+1][ly][rx],(cl[rx][ly]==cl[lx-1][ly])*(dp[(S&1)^1][0][lx][ly+1][rx]+cor(lx,ly)));
}
}
return !printf("%d",dp[(n+m)&1][3][1][1][n]);
}

#dp#洛谷 3473 [POI2008] UCI-The Great Escape JZOJ 4019 Path的更多相关文章

  1. 树形DP 洛谷P2014 选课

    洛谷P2014 选课 题目描述 在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习.现在有N门功课,每门 ...

  2. BZOJ1123或洛谷3469 [POI2008]BLO-Blockade

    BZOJ原题链接 洛谷原题链接 若第\(i\)个点不是割点,那么只有这个点单独形成一个连通块,其它点依旧连通,则答案为\(2\times (n-1)\). 若第\(i\)个点是割点,那么去掉这个点相关 ...

  3. 洛谷 P3478 [POI2008]STA-Station

    题目描述 The first stage of train system reform (that has been described in the problem Railways of the ...

  4. 洛谷P3478 [POI2008]STA-Station

    P3478 [POI2008]STA-Station 题目描述 The first stage of train system reform (that has been described in t ...

  5. 区间DP 洛谷P2858牛奶零食

    题目链接 题意:你有n个货物从1-n依次排列,每天可以从两侧选一个出来卖,卖的价格是当天的天数乘该货物的初始价格,问这批货物卖完的最大价格 输入:第一行n,之后是n个货物的初始价值 这道题不能用贪心做 ...

  6. P1279 字串距离 dp 洛谷

    题目描述 设有字符串X,我们称在X的头尾及中间插入任意多个空格后构成的新字符串为X的扩展串,如字符串X为”abcbcd”,则字符串“abcb□cd”,“□a□bcbcd□”和“abcb□cd□”都是X ...

  7. dp 洛谷P1977 出租车拼车 线性dp

    题目背景 话说小 x 有一次去参加比赛,虽然学校离比赛地点不太远,但小 x 还是想坐 出租车去.大学城的出租车总是比较另类,有“拼车”一说,也就是说,你一个人 坐车去,还是一堆人一起,总共需要支付的钱 ...

  8. 经典DP 洛谷p1880 石子合并

    https://www.luogu.org/problemnew/show/P1880 题目 题目描述 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新 ...

  9. [DP]洛谷P1115最大子段和

    题目来源 https://www.luogu.org/problemnew/show/P1115 题目描述 给出一段序列,选出其中连续且非空的一段使得这段和最大. 输入输出格式 输入格式: 第一行是一 ...

  10. 洛谷 P3477 [POI2008]PER-Permutation 解题报告

    P3477 [POI2008]PER-Permutation 题目描述 Multiset is a mathematical object similar to a set, but each mem ...

随机推荐

  1. 老生常谈的iOS- weak原理,你真的懂得还是为了应付面试

    前言 weak对于iOS开发来说只要解决一些对象相互引用的时候,避免出现强强引用,对象不能被释放,出现内存泄露的问题. weak 关键字的作用域弱引用,所引用对象的计数器不会加一,并在引用对象被释放的 ...

  2. Vue 之 new vue({})与export default {} 的区别

    刚入门 vue 的,可能会有这样的困惑:什么时候用new vue({}),什么时候用export default {} 呢? 比如,我们在用 cli 创建项目时 在 main.js 入口里面用的时ne ...

  3. 【Azure 应用服务】在安全漏洞扫描中发现有泄露服务器IIS版本的情况,如何实现屏蔽服务版本号信息呢?

    问题描述 当对Azure App Service应用进行安全扫描时,发现了HTTP/S请求的响应头中会包含服务端IIS的版本信息,这是一个低风险因素. 如: Server: Microsoft-IIS ...

  4. Springboot 撞上 NebulaGraph——NGbatis 初体验

    本文首发于 NebulaGraph 公众号 https://mp.weixin.qq.com/s/z56o6AEz1Z4RmS8Zdx6dTA 大家好,我是开源项目 NGbatis 的发起人大叶(Co ...

  5. 基于Ant Design设计语言的WinForm UI界面库

    前言 经常在技术群里看到有小伙伴提问:WinForm有什么好看.开源的UI库推荐的吗?,今天大姚给大家分享一款基于Ant Design(使用Ant Design 5.0)设计语言.开源(Apache ...

  6. Java 关于变量的赋值

    1 /** 2 * 3 * @Description 4 * @author Bytezero·zhenglei! Email:420498246@qq.com 5 * @version 6 * @d ...

  7. Git常见的面试题

    在软件开发领域,Git是一个极为重要的版本控制系统,几乎每个开发者都需要掌握它.因此,在面试过程中,Git常常成为了面试官们用来考察候选人技能和经验的重要工具之一.以下是一些常见的Git面试题,希望它 ...

  8. aardio ide 字体 及设置

    需求 aardio ide 只支持一个字体,英文字体肯定是Fira 但是中文字体不好,所以只好将两个字体合并上使用. 有教程.但是我发现已经有合并好的,就拿来使用吧放到fonts目录里面 代码 imp ...

  9. Win10使用Dism++离线安装.Net3.5

    .Net3.5的安装包在Win10已经不能使用了,在线安装.Net3.5会很卡(跟网络无关),最好是使用Dism++提取Win10系统镜像文件离线安装. 打开Dism++软件,按照如下步骤操作: 选择 ...

  10. k8s架构解析

    Kubernetes(K8s)是一个开源的容器编排平台,用于自动化部署.扩展和管理容器化应用程序.Kubernetes由多个组件组成,每个组件都扮演着不同的角色.以下是Kubernetes中一些主要组 ...