[洛谷P1373][题解]小a和uim之大逃离
这道题可以很容易看出是一道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之大逃离的更多相关文章
- 【洛谷P1373】小a和uim之大逃离
小a和uim之大逃离 题目链接 因为每次只能向下或向右走,我们可以递推 dp[i][j][d][0/1]表示走到(i,j),mod k 意义下差值为d,轮到小a/小uim操作时的方案数 dp[i][j ...
- 【洛谷P3818】小A和uim之大逃离 II
小A和uim之大逃离 II 题目链接 比较裸的搜索,vis[i][j]再加一层[0/1]表示是否使用过魔液 转移时也将是否使用过魔液记录下来,广搜即可 #include<iostream> ...
- 洛谷 1373 dp 小a和uim之大逃离 良心题解
洛谷 1373 dp 这题还不算太难,,当初看的时候不是很理解题意,以为他们会选择两条不同的路径,导致整体思路混乱 传送门 其实理解题意和思路之后还是敲了不短的时间,一部分身体原因再加上中午休息不太好 ...
- 洛谷 P1373 小a和uim之大逃离
2016-05-30 12:31:59 题目链接: P1373 小a和uim之大逃离 题目大意: 一个N*M的带权矩阵,以任意起点开始向右或者向下走,使得奇数步所得权值和与偶数步所得权值和关于K的余数 ...
- 洛谷P1373 小a和uim之大逃离
P1373 小a和uim之大逃离 题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电,一阵阵雷声.刹那间,狂风大作,乌云布满了天空,紧接着豆大的雨点从 ...
- 洛古 P1373 小a和uim之大逃离
P1373 小a和uim之大逃离 题目提供者lzn 标签 动态规划 洛谷原创 难度 提高+/省选- 题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电 ...
- 洛谷1373 小a和uim之大逃离
洛谷1373 小a和uim之大逃离 本题地址:http://www.luogu.org/problem/show?pid=1373 题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北 ...
- 【题解】 P1373 小a和uim之大逃离
题解 P1373 小a和uim之大逃离 传送门 一道dp好题 乍看此题,感觉要这样设计: \(dp(x)(y)(mod_{a})(mod_{uim})(0/1)\) , 但是我上午考试就MLE了,赶紧 ...
- 【题解】P1373 小a和uim之大逃离
[题解]P1373 小a和uim之大逃离 考虑到可能会MLE,考虑状态压缩一下 由于只要得到他们的差就行了,所以直接少记录一维就好了 \(dp(i,j,r,1/0)\)表示在\(i,j\)点,当前ui ...
随机推荐
- WebGPU学习(五): 现代图形API技术要点和WebGPU支持情况调研
大家好,本文整理了现代图形API的技术要点,重点研究了并行和GPU Driven Render Pipeline相关的知识点,调查了WebGPU的相关支持情况. 另外,本文对实时光线追踪也进行了简要的 ...
- python列表式推导
1.基本语法 [表达式 for 变量 in 列表] 或者 : [表达式 for 变量 in 列表 if 条件] 2.示例 生成列表 li=[x for x in range(10)] print(l ...
- 简述c和c++的基本区别,你真的懂吗?(面试必学)
前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:angry_youth **1.c和c++的头文件不同:** c的头 ...
- django上传并显示图片
环境 python 3.5 django 1.10.6 步骤 创建名为 testupload的项目 django-admin startproject testupload 在项目testupload ...
- web漏洞-命令执行、文件上传、XSS
一.命令执行 1:什么是命令执行? 命令执行漏洞是指攻击者可以随意执行系统命令.属于高危漏洞之一任何脚本语言都可以调用操作系统命令. 应用有时需要调用一些执行系统命令的函数,举个例子如:PHP中的 ...
- JS-选择排序
选择排序 选择排序的原理如下.遍历数组,设置最小值的索引为 0,如果取出的值比当前最小值小,就替换最小值索引,遍历完成后,将第一个元素和最小值索引上的值交换.如上操作后,第一个元素就是数组中的最小值, ...
- 自建邮件服务器域名解析设置(A与MX记录)
自建邮件服务器域名解析设置(A与MX记录) 前言 如果域名没有做解析,只能用于内网收发邮件.要想实现与外网邮箱的收发,需要做域名解析.是在"域名解析后台"进行设置(域名提供商提供& ...
- ubifs开销测试
问题 在板子上观察到56M的ubi卷,挂载上ubifs之后,df -h显示可用空间约为50M. 如此计算开销超过了10%,那么这个开销随容量如何变化呢,是固定为10%吗还是有其他规律? 理论计算 简单 ...
- Internet History,Technology,and Security -Transport Control Protocol(TCP)(Week6)
Week6 Technology: Transport Control Protocol(TCP) Welcome to Week 6 of IHTS. We are in our second we ...
- Github挂载大文件解决方案
正常情况下,我们上传代码之类的文本文件,都不会太大,可以直接通过[Upload Files]选项直接上传. 但是这样的操作仅限文件大小在25MB以内. 如果你选择的文件超过25MB,那么Github会 ...