(别点我我不是题目)

这道题可以很容易看出是一道dp(因为是在dp关卡里找的)

稍微想一下就可以yy出一个不错的状态:

f[i][j][k][0/1]代表走到了点(i,j)、膜液量相差k(小a-uim=k)、小a/uim最后取的情况数

坑一:

f[][][][]:Accepted  .00s .31MB
f[][][][]:Unaccepted .11s .00MB//MLE三个点

转移也很好办:一个点只可能从左边或者上边走来

int tmp=(c-mp[i][j]+k)%k;
f[i][j][c][]+=(f[i-][j][tmp][]%mod+f[i][j-][tmp][]%mod)%mod;
f[i][j][c][]%=mod;
tmp=(c+mp[i][j])%k;
f[i][j][c][]+=(f[i-][j][tmp][]%mod+f[i][j-][tmp][]%mod)%mod;
f[i][j][c][]%=mod;

其中tmp代表上一个点的膜液差

坑二:输入时的膜液量可能大于k

坑三:可以从任一点出发,应将每个f[i][j][mp[i][j]][0]赋值为1

坑四:c-mp[i][j]可能是负的,如果不写成tmp=(c-mp[i][j]+k)%k而是tmp=(c-mp[i][j])%k的话,

Unaccepted  .01s .01MB

不多说了,看代码

 #include<bits/stdc++.h>
using namespace std;
int n,m,k,mp[][];
//坑一:炸空间
int f[][][][],sum;
#define mod 1000000007
int main(){
ios::sync_with_stdio();
cin>>n>>m>>k;
k++;
//读入
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
cin>>mp[i][j];
//坑二:膜液量
mp[i][j]%=k;
//坑三:出发点
f[i][j][mp[i][j]][]=;
}
}
//DP
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
for(int c=;c<k;c++){
//坑四:取膜
int tmp=(c-mp[i][j]+k)%k;
f[i][j][c][]+=(f[i-][j][tmp][]%mod+f[i][j-][tmp][]%mod)%mod;
f[i][j][c][]%=mod; tmp=(c+mp[i][j])%k;
f[i][j][c][]+=(f[i-][j][tmp][]%mod+f[i][j-][tmp][]%mod)%mod;
f[i][j][c][]%=mod;
}
sum=(sum+f[i][j][][])%mod;
}
}
cout<<sum<<endl;
return ;
}

完结撒花

[洛谷P1373][题解]小a和uim之大逃离的更多相关文章

  1. 【洛谷P1373】小a和uim之大逃离

    小a和uim之大逃离 题目链接 因为每次只能向下或向右走,我们可以递推 dp[i][j][d][0/1]表示走到(i,j),mod k 意义下差值为d,轮到小a/小uim操作时的方案数 dp[i][j ...

  2. 【洛谷P3818】小A和uim之大逃离 II

    小A和uim之大逃离 II 题目链接 比较裸的搜索,vis[i][j]再加一层[0/1]表示是否使用过魔液 转移时也将是否使用过魔液记录下来,广搜即可 #include<iostream> ...

  3. 洛谷 1373 dp 小a和uim之大逃离 良心题解

    洛谷 1373 dp 这题还不算太难,,当初看的时候不是很理解题意,以为他们会选择两条不同的路径,导致整体思路混乱 传送门 其实理解题意和思路之后还是敲了不短的时间,一部分身体原因再加上中午休息不太好 ...

  4. 洛谷 P1373 小a和uim之大逃离

    2016-05-30 12:31:59 题目链接: P1373 小a和uim之大逃离 题目大意: 一个N*M的带权矩阵,以任意起点开始向右或者向下走,使得奇数步所得权值和与偶数步所得权值和关于K的余数 ...

  5. 洛谷P1373 小a和uim之大逃离

    P1373 小a和uim之大逃离 题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电,一阵阵雷声.刹那间,狂风大作,乌云布满了天空,紧接着豆大的雨点从 ...

  6. 洛古 P1373 小a和uim之大逃离

    P1373 小a和uim之大逃离 题目提供者lzn 标签 动态规划 洛谷原创 难度 提高+/省选- 题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电 ...

  7. 洛谷1373 小a和uim之大逃离

    洛谷1373 小a和uim之大逃离 本题地址:http://www.luogu.org/problem/show?pid=1373 题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北 ...

  8. 【题解】 P1373 小a和uim之大逃离

    题解 P1373 小a和uim之大逃离 传送门 一道dp好题 乍看此题,感觉要这样设计: \(dp(x)(y)(mod_{a})(mod_{uim})(0/1)\) , 但是我上午考试就MLE了,赶紧 ...

  9. 【题解】P1373 小a和uim之大逃离

    [题解]P1373 小a和uim之大逃离 考虑到可能会MLE,考虑状态压缩一下 由于只要得到他们的差就行了,所以直接少记录一维就好了 \(dp(i,j,r,1/0)\)表示在\(i,j\)点,当前ui ...

随机推荐

  1. 用C语言开发的19个经典项目,你会第几个?

    前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:实验楼 C语言是我们大多数人的编程入门语言,对其也再熟悉不过了,不过很多 ...

  2. WebAPI测试概念及postman初识

    什么是接口?   ------   某个对象和外界交互的部分 消息交互接口:基于soap的web service  ---- http协议 web api   ------- http协议 diame ...

  3. Django 11

    目录 功能配置设计 跨站请求伪造CSRF 什么是CSRF 如果实现CSRF 如何避免CSRF CSRF相关的两个装饰器 auth模块 常用方法 扩展auth_user表中的字段 功能配置设计 实现类似 ...

  4. Java虚拟机堆和栈详细解析,以后面试再也不怕问jvm了!

    堆 Java堆是和Java应用程序关系最密切的内存空间,几乎所有的对象都放在其中,并且Java堆完全是自动化管理,通过垃圾收集机制,垃圾对象会自动清理,不需自己去释放. 根据垃圾回收机制的不同,Jav ...

  5. jvm面试题 新生代和 老年代的区别

    新生代和老年代的区别(阿里面试官的题目): 所谓的新生代和老年代是针对于分代收集算法来定义的,新生代又分为Eden和Survivor两个区.加上老年代就这三个区.数据会首先分配到Eden区 当中(当然 ...

  6. golang中copy文件时,buffer设多大值合适,性能对比

    在go语言中,copy文件时,大文件使用buffer缓冲,可以明显加快时间, 但这个值多大合适呢? 除了考虑计算机的硬件资源,还要考虑CP文件的大小. 如果都是100m之内的小文件,一次CP完就可以. ...

  7. aspnet boilerplate 随笔二

    项目框架介绍: 1:Application: 在service里面事件具体业务,Dto相当于viewmodel实现了验证 2:Core:实现了数据层Model   3:EntityFrameworkC ...

  8. harbor部署之SSL

    harbor部署之SSL 1 签名证书与自签名证书 签名证书:由权威颁发机构颁发给服务器或者个人用于证明自己身份的东西. 自签名证书:由服务器自己颁发给自己,用于证明自己身份的东西,非权威颁发机构发布 ...

  9. Windows Redis 安装(带视频)

    疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 架构师成长+面试必备之 高并发基础书籍 [Netty Zookeeper Redis 高并发实战 ] 疯狂创客圈 高并 ...

  10. Docker安全扫描工具之Anchore

    本篇简单介绍一款Docker安全扫描工具Anchore的安装和使用. 前言 下述过程是在CentOS 7.6的虚拟机上进行的. [root@localhost ~]# cat /etc/redhat- ...