[P1373]小a和uim之大逃离 (DP)
[题目链接]
模拟赛的时候的一道题
因为老师不小心把数据发下来了……我考试打表的
考完之后Orz xzjds
然后开始打正解
题意
大概就是两个人,走矩阵,两个人各加上走上的矩阵的数值,要求最终两个人和相同的方案数有多少
分析
很明显是一个动态规划题
f[i][j][k][a]表示走到(i,j)的时候,值为k,a==1/0 表示第一个人活着第二个人 的时候的可能存在的方案数
因为要求的是全部方案数,并且是任意点开始,任意点结束的,所以需要把全部的加起来
(方程式调了很久 最后才发现给的k为了方便处理+1比较好 在xzjds的思路下做出来的)
代码
#include<bits/stdc++.h>
#define mod 1000000007
#define ll long long
using namespace std;
inline int read() {
int f = , x = ; char ch;
do { ch = getchar(); if (ch == '-')f = -; } while (ch<'' || ch>'');
do { x = x * + ch - ''; ch = getchar(); } while (ch >= ''&&ch <= '');
return f * x;
}
int a[][];
int f[][][][];
int main()
{
int n=read(),m=read(),kk=read();
kk++;
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
a[i][j]=read()%mod;
f[i][j][a[i][j]][]=;
}
}
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
for(int k=;k<=kk-;k++)
{
f[i][j+][(k+a[i][j+])%kk][]=(f[i][j+][(k+a[i][j+])%kk][]+f[i][j][k][])%mod;
f[i+][j][(k+a[i+][j])%kk][]=(f[i+][j][(k+a[i+][j])%kk][]+f[i][j][k][])%mod;
f[i][j+][(k-a[i][j+]+kk)%kk][]=(f[i][j+][(k-a[i][j+]+kk)%kk][]+f[i][j][k][])%mod;
f[i+][j][(k-a[i+][j]+kk)%kk][]=(f[i+][j][(k-a[i+][j]+kk)%kk][]+f[i][j][k][])%mod;
}
}
}
int ans=;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
ans=(ans+f[i][j][][])%mod;
printf("%d",ans);
return ;
}
[P1373]小a和uim之大逃离 (DP)的更多相关文章
- 洛谷P1373 小a和uim之大逃离 dp
正解:dp 解题报告: 传送门! 同样是看到列表发的题解就想着跟着做下dp的题目趴 然后发现还挺难的,,,反正我只大概想到怎么转移但是初始化什么的都不会TT 所以还是大概说下QAQ 首先可以想到设f[ ...
- 洛古 P1373 小a和uim之大逃离
P1373 小a和uim之大逃离 题目提供者lzn 标签 动态规划 洛谷原创 难度 提高+/省选- 题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电 ...
- 洛谷 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之大逃离 传送门 一道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 ...
- luogu- P1373 小a和uim之大逃离 DP 四维,其中一维记录差值
P1373 小a和uim之大逃离: https://www.luogu.org/problemnew/show/P1373 题意: 在一个矩阵中,小A和小B轮流取数,小A可以从任意点先取,小B后取,最 ...
- 洛谷P1373 小a和uim之大逃离[背包DP]
题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电,一阵阵雷声.刹那间,狂风大作,乌云布满了天空,紧接着豆大的雨点从天空中打落下来,只见前方出现了一个 ...
- 洛谷 P1373 小a和uim之大逃离 Label:dp 不会
题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电,一阵阵雷声.刹那间,狂风大作,乌云布满了天空,紧接着豆大的雨点从天空中打落下来,只见前方出现了一个 ...
随机推荐
- Red Language
官网地址:http://www.red-lang.org/ 源代码地址:https://github.com/red/red 通过github上的Readme,可以完成Hello World的学习 ...
- 爬虫基础以及 re,BeatifulSoup,requests模块使用
爬虫基础以及BeatifulSoup模块使用 爬虫的定义:向网站发起请求,获取资源后分析并提取有用数据的程序 爬虫的流程 发送请求 ---> request 获取响应内容 ---> res ...
- C/C++字节序(大端/小端)判断
C/C++大端小端判断 说的是变量的高字节.低字节在内存地址中的排放顺序. 变量的高字节放到内存的低地址中(变量的低字节放到内存的高地址中)==>大端 变量的高字节放到内存的高地址中(变量的低字 ...
- TFS: 解决The build agent error - the session for this agent already exists
来源:http://ericphan.net/blog/2016/6/10/solving-the-tfs-build-agent-error-the-session-for-this-agent-a ...
- 一起学Hadoop——实现两张表之间的连接操作
---恢复内容开始--- 之前我们都是学习使用MapReduce处理一张表的数据(一个文件可视为一张表,hive和关系型数据库Mysql.Oracle等都是将数据存储在文件中).但是我们经常会遇到处理 ...
- 【Android】ContentValues的用法
ContentValues 和HashTable类似都是一种存储的机制 但是两者最大的区别就在于,contenvalues只能存储基本类型的数据,像string,int之类的,不能存储对象这种东西,而 ...
- Ant之build.xml详解
Ant之build.xml详解 关键字: ant build.xml Ant的概念 可能有些读者并不连接什么是Ant以及入可使用它,但只要使用通过Linux系统得读者,应该知道make这个命令.当编译 ...
- eclipse发布web
elipse集成tomcat 在实际开发中通常在eclipse中集成tomcat,这样在开发中更方便一些.打开eclipse,选择界面下方的servers选项,点击no servers are ava ...
- ubuntu镜像下载地址
下载地址: http://mirror.pnl.gov/releases/xenial/ Ubuntu 14.04.5 LTS (Trusty Tahr)http://releases.ubuntu. ...
- 桐桐的数学游戏(N皇后)
题目描述 相信大家都听过经典的“八皇后”问题吧?这个游戏要求在一个8×8的棋盘上放置8个皇后,使8个皇后互相不攻击(攻击的含义是有两个皇后在同一行或同一列或同一对角线上). 桐桐对这个游戏很感兴趣,也 ...