/*
很容易想到f[i][j][k][l][01] 表示到ij点 两个人得分为kl 01表示这一步谁走的
因为起点不同 路径不同 所以要枚举起点..
时间复杂度 O(nmk*nmk)
空间复杂度 O(2*nmkk)
超时爆空间.....
40分
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 810
#define mod 1000000007
using namespace std;
int n,m,K,ans,a[maxn][maxn];
int f[][][][][];
void Clear(int x,int y)
{
for(int i=x;i<=n;i++)
for(int j=y;j<=m;j++)
for(int k=;k<=K;k++)
for(int l=;l<=K;l++)
{
f[i][j][k][l][]=;
f[i][j][k][l][]=;
}
}
int main()
{
scanf("%d%d%d",&n,&m,&K);K++;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
scanf("%d",&a[i][j]);
for(int x=;x<=n;x++)
for(int y=;y<=m;y++)
{
Clear(x,y);
f[x][y][a[x][y]%K][][]=;
for(int i=x;i<=n;i++)
for(int j=y;j<=m;j++)
for(int k=;k<K;k++)
for(int l=;l<K;l++)
{
if(i+<=n)
{
f[i+][j][(k+a[i+][j])%K][l][]=(f[i+][j][(k+a[i+][j])%K][l][]+f[i][j][k][l][])%mod;
f[i+][j][k][(l+a[i+][j])%K][]=(f[i+][j][k][(l+a[i+][j])%K][]+f[i][j][k][l][])%mod;
}
if(j+<=m)
{
f[i][j+][(k+a[i][j+])%K][l][]=(f[i][j+][(k+a[i][j+])%K][l][]+f[i][j][k][l][])%mod;
f[i][j+][k][(l+a[i][j+])%K][]=(f[i][j+][k][(l+a[i][j+])%K][]+f[i][j][k][l][])%mod;
}
if(k==l)ans=(ans+f[i][j][k][l][])%mod;
}
}
printf("%d\n",ans);
return ;
}
/*
其实刚才的状态可以降一维 把kl改为两个人的差值
但是会出现负数 考试的时候想到数组平移 但是答案就不对了....
然后打了暴力 6层循环 美美的~ 后来终于在眼泪中明白 数组平移个卵...
因为在Mod的意义下 平移之后状态就不对应了
不平移mod完之后在+K不就好了嘛
还有就是傻傻的枚举起点了..赋好初值 从1 1开始就好了吗
反正最后统计方案数 互相之间不影响
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 810
#define mod 1000000007
using namespace std;
int n,m,K,ans,a[maxn][maxn];
int f[maxn][maxn][][];
int main()
{
scanf("%d%d%d",&n,&m,&K);K++;
memset(f,,sizeof(f));
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
{
scanf("%d",&a[i][j]);
f[i][j][a[i][j]%K][]=;
}
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
for(int k=;k<K;k++)
{
if(i+<=n)
{
f[i+][j][(k+a[i+][j])%K][]=(f[i+][j][(k+a[i+][j])%K][]+f[i][j][k][])%mod;
f[i+][j][(k-a[i+][j]+K)%K][]=(f[i+][j][(k-a[i+][j]+K)%K][]+f[i][j][k][])%mod;
}
if(j+<=m)
{
f[i][j+][(k+a[i][j+])%K][]=(f[i][j+][(k+a[i][j+])%K][]+f[i][j][k][])%mod;
f[i][j+][(k-a[i][j+]+K)%K][]=(f[i][j+][(k-a[i][j+]+K)%K][]+f[i][j][k][])%mod;
}
if(k==)ans=(ans+f[i][j][k][])%mod;
}
printf("%d\n",ans);
return ;
}

洛谷 1373 小a和uim之大逃离的更多相关文章

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

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

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

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

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

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

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

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

  5. 【题解】洛谷P1373 小a和uim之大逃离(坐标DP)

    次元传送门:洛谷P1373 思路 设f[i][j][t][1/0]表示走到(i,j)时 小a减去uim的差值为t 当前是小a取(0) uim取(1) 那么转移就很明显了 f[i][j][t][]=(f ...

  6. 洛谷P1373 小a和uim之大逃离[背包DP]

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

  7. 洛谷 P1373 小a和uim之大逃离 Label:dp 不会

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

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

    正解:dp 解题报告: 传送门! 同样是看到列表发的题解就想着跟着做下dp的题目趴 然后发现还挺难的,,,反正我只大概想到怎么转移但是初始化什么的都不会TT 所以还是大概说下QAQ 首先可以想到设f[ ...

  9. 洛谷 P1373 小a和uim之大逃离 题解

    每日一题 day30 打卡 Analysis f[i][j][p][q]表示他们走到(i,j),且两人魔瓶内魔液量的差为p时的方法数.q=0表示最后一步是小a走的,q=1表示最后一步是uim走的.题目 ...

随机推荐

  1. AdminLTE

    AdminLTE搭建前端   0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp ...

  2. ps的使用方法

    1.打开原图素材,Ctrl + J把背景图层复制一层,按Ctrl + Shift + U去色,执行:滤镜 > 模糊 > 高斯模糊,数值4,图层混合模式为滤色,图层不透明度改为27%. 2. ...

  3. 2、MyBatis.NET学习笔记之CodeSmith使用

    说明:本系列随笔会与CSDN同步发布,当然这里先发,因为这里可以用WLW.但刚才由于误操作,没有重新发上来.只好先在CSDN先发了.重往这里发时图片无法处理,索性直接粘过来吧! 使用框架后一些相关的配 ...

  4. maven jetty plugin

    转载:http://blog.163.com/xueling1231989@126/blog/static/1026408072013101311395492/ 前言: 在 maven 下测试调试时, ...

  5. poj 2432 Around the world bfs+哈希

    由于每个点的状态包含走过来的距离,所以要存二维的状态,但是状态总量太多,所以可以用哈希来搞. 那么就是bfs最短路,哈希记录状态了. #include <iostream> #includ ...

  6. mysq 日期相减

    mysql> desc test200; +---------------+----------+------+-----+---------+-------+ | Field | Type | ...

  7. BZOJ 1072 [SCOI2007]排列perm

    1072: [SCOI2007]排列perm Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1268  Solved: 782[Submit][Sta ...

  8. -_-#【CSS3】浏览器前缀

    前缀 浏览器 -khtml Konqueror(非常老的 Safari) -moz Firefox -o Opera -ms Internet Explorer -webkit Safari.Chro ...

  9. 【转】Java 枚举7常见种用法

    原文网址:http://softbeta.iteye.com/blog/1185573 Java 枚举7常见种用法 博客分类: java java枚举enmu  原创地址:http://blog.li ...

  10. (转载)mysql中百万级数据插入速度测试

    (转载)http://www.111cn.net/database/mysql/42453.htm 100W的数据对于很多朋友来说算小菜了,但今天我就想到创建一个大量数据的测试环境,于是找了一下怎么插 ...