#dp#洛谷 3473 [POI2008] UCI-The Great Escape JZOJ 4019 Path
题目
\(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的更多相关文章
- 树形DP 洛谷P2014 选课
洛谷P2014 选课 题目描述 在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习.现在有N门功课,每门 ...
- BZOJ1123或洛谷3469 [POI2008]BLO-Blockade
BZOJ原题链接 洛谷原题链接 若第\(i\)个点不是割点,那么只有这个点单独形成一个连通块,其它点依旧连通,则答案为\(2\times (n-1)\). 若第\(i\)个点是割点,那么去掉这个点相关 ...
- 洛谷 P3478 [POI2008]STA-Station
题目描述 The first stage of train system reform (that has been described in the problem Railways of the ...
- 洛谷P3478 [POI2008]STA-Station
P3478 [POI2008]STA-Station 题目描述 The first stage of train system reform (that has been described in t ...
- 区间DP 洛谷P2858牛奶零食
题目链接 题意:你有n个货物从1-n依次排列,每天可以从两侧选一个出来卖,卖的价格是当天的天数乘该货物的初始价格,问这批货物卖完的最大价格 输入:第一行n,之后是n个货物的初始价值 这道题不能用贪心做 ...
- P1279 字串距离 dp 洛谷
题目描述 设有字符串X,我们称在X的头尾及中间插入任意多个空格后构成的新字符串为X的扩展串,如字符串X为”abcbcd”,则字符串“abcb□cd”,“□a□bcbcd□”和“abcb□cd□”都是X ...
- dp 洛谷P1977 出租车拼车 线性dp
题目背景 话说小 x 有一次去参加比赛,虽然学校离比赛地点不太远,但小 x 还是想坐 出租车去.大学城的出租车总是比较另类,有“拼车”一说,也就是说,你一个人 坐车去,还是一堆人一起,总共需要支付的钱 ...
- 经典DP 洛谷p1880 石子合并
https://www.luogu.org/problemnew/show/P1880 题目 题目描述 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新 ...
- [DP]洛谷P1115最大子段和
题目来源 https://www.luogu.org/problemnew/show/P1115 题目描述 给出一段序列,选出其中连续且非空的一段使得这段和最大. 输入输出格式 输入格式: 第一行是一 ...
- 洛谷 P3477 [POI2008]PER-Permutation 解题报告
P3477 [POI2008]PER-Permutation 题目描述 Multiset is a mathematical object similar to a set, but each mem ...
随机推荐
- 老生常谈的iOS- weak原理,你真的懂得还是为了应付面试
前言 weak对于iOS开发来说只要解决一些对象相互引用的时候,避免出现强强引用,对象不能被释放,出现内存泄露的问题. weak 关键字的作用域弱引用,所引用对象的计数器不会加一,并在引用对象被释放的 ...
- Vue 之 new vue({})与export default {} 的区别
刚入门 vue 的,可能会有这样的困惑:什么时候用new vue({}),什么时候用export default {} 呢? 比如,我们在用 cli 创建项目时 在 main.js 入口里面用的时ne ...
- 【Azure 应用服务】在安全漏洞扫描中发现有泄露服务器IIS版本的情况,如何实现屏蔽服务版本号信息呢?
问题描述 当对Azure App Service应用进行安全扫描时,发现了HTTP/S请求的响应头中会包含服务端IIS的版本信息,这是一个低风险因素. 如: Server: Microsoft-IIS ...
- Springboot 撞上 NebulaGraph——NGbatis 初体验
本文首发于 NebulaGraph 公众号 https://mp.weixin.qq.com/s/z56o6AEz1Z4RmS8Zdx6dTA 大家好,我是开源项目 NGbatis 的发起人大叶(Co ...
- 基于Ant Design设计语言的WinForm UI界面库
前言 经常在技术群里看到有小伙伴提问:WinForm有什么好看.开源的UI库推荐的吗?,今天大姚给大家分享一款基于Ant Design(使用Ant Design 5.0)设计语言.开源(Apache ...
- Java 关于变量的赋值
1 /** 2 * 3 * @Description 4 * @author Bytezero·zhenglei! Email:420498246@qq.com 5 * @version 6 * @d ...
- Git常见的面试题
在软件开发领域,Git是一个极为重要的版本控制系统,几乎每个开发者都需要掌握它.因此,在面试过程中,Git常常成为了面试官们用来考察候选人技能和经验的重要工具之一.以下是一些常见的Git面试题,希望它 ...
- aardio ide 字体 及设置
需求 aardio ide 只支持一个字体,英文字体肯定是Fira 但是中文字体不好,所以只好将两个字体合并上使用. 有教程.但是我发现已经有合并好的,就拿来使用吧放到fonts目录里面 代码 imp ...
- Win10使用Dism++离线安装.Net3.5
.Net3.5的安装包在Win10已经不能使用了,在线安装.Net3.5会很卡(跟网络无关),最好是使用Dism++提取Win10系统镜像文件离线安装. 打开Dism++软件,按照如下步骤操作: 选择 ...
- k8s架构解析
Kubernetes(K8s)是一个开源的容器编排平台,用于自动化部署.扩展和管理容器化应用程序.Kubernetes由多个组件组成,每个组件都扮演着不同的角色.以下是Kubernetes中一些主要组 ...