hdu 4832 dp ***
dp1[i][j]表示只走x轴走j步到i位置有多少总走法,dp2同,dp方程就很好写
wa了无数发,发现MOD写在INF上了
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#include<map>
using namespace std;
#define MOD 9999991
const int INF=;
const double eps=1e-;
typedef long long ll;
#define cl(a) memset(a,0,sizeof(a))
#define ts printf("*****\n");
const int MAXN=;
int n,m,tt;
int x,y,k;
int c[][];
int sum1[],sum2[];
int dp1[MAXN][],dp2[MAXN][];
void add(int &a,int b)
{
a=(a+b)%MOD;
}
void fun()
{
cl(dp1),cl(dp2);
c[][]=c[][]=c[][]=;
for(int i=;i<=;i++)
{
c[i][]=;
for(int j=;j<i;j++)
{
c[i][j]=c[i-][j]+c[i-][j-];
c[i][j]%=MOD;
}
c[i][i]=;
}
dp1[x][]=;
for(int i=;i<=k;i++)
{
for(int j=;j<=n;j++)
{
if(j+<=n) add(dp1[j][i],dp1[j+][i-]);
if(j+<=n) add(dp1[j][i],dp1[j+][i-]);
if(j->=) add(dp1[j][i],dp1[j-][i-]);
if(j->=) add(dp1[j][i],dp1[j-][i-]);
}
}
dp2[y][]=;
for(int i=;i<=k;i++)
{
for(int j=;j<=m;j++)
{
if(j+<=m) add(dp2[j][i],dp2[j+][i-]);
if(j+<=m) add(dp2[j][i],dp2[j+][i-]);
if(j->=) add(dp2[j][i],dp2[j-][i-]);
if(j->=) add(dp2[j][i],dp2[j-][i-]);
}
}
cl(sum1),cl(sum2);
for(int i=;i<=k;i++)
{
for(int j=;j<=n;j++)
{
add(sum1[i],dp1[j][i]);
}
}
for(int i=;i<=k;i++)
{
for(int j=;j<=m;j++)
{
add(sum2[i],dp2[j][i]);
}
}
}
int main()
{
int i,j;
#ifndef ONLINE_JUDGE
freopen("1.in","r",stdin);
#endif
int ca=;
scanf("%d",&tt);
while(tt--)
{
scanf("%d%d%d%d%d",&n,&m,&k,&x,&y);
fun();
printf("Case #%d:\n",ca++);
ll sum=;
for(i=;i<=k;i++)
{
sum += (long long)c[k][i]*sum1[i]%MOD*sum2[k-i]%MOD;
sum %= MOD;
}
printf("%d\n",(int)sum);
}
}
hdu 4832 dp ***的更多相关文章
- HDU 4832(DP+计数问题)
HDU 4832 Chess 思路:把行列的情况分别dp求出来,然后枚举行用几行,竖用几行.然后相乘累加起来就是答案 代码: #include <stdio.h> #include < ...
- hdu 3016 dp+线段树
Man Down Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...
- HDU 5928 DP 凸包graham
给出点集,和不大于L长的绳子,问能包裹住的最多点数. 考虑每个点都作为左下角的起点跑一遍极角序求凸包,求的过程中用DP记录当前以j为当前末端为结束的的最小长度,其中一维作为背包的是凸包内侧点的数量.也 ...
- HDU 4832 Chess (DP)
Chess Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- hdu 4832 Chess(dp)
Chess Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- HDU 4832 Chess(DP+组合数学)(2014年百度之星程序设计大赛 - 初赛(第二轮))
Problem Description 小度和小良最近又迷上了下棋.棋盘一共有N行M列,我们可以把左上角的格子定为(1,1),右下角的格子定为(N,M).在他们的规则中,“王”在棋盘上的走法遵循十字路 ...
- HDU 1069 dp最长递增子序列
B - Monkey and Banana Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I6 ...
- HDU 1160 DP最长子序列
G - FatMouse's Speed Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64 ...
- hdu 4826(dp + 记忆化搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4826 思路:dp[x][y][d]表示从方向到达点(x,y)所能得到的最大值,然后就是记忆化了. #i ...
随机推荐
- pthread 学习系列 case2-- pthread_mutex_t
许多互斥对象 如果放置了过多的互斥对象,代码就没有什么并发性可言,运行起来也比单线程解决方案慢.如果放置了过少的互斥对象,代码将出现奇怪和令人尴尬的错误.幸运的是,有一个中间立场.首先,互斥对象是用于 ...
- 【转载】一致性hash算法释义
http://www.cnblogs.com/haippy/archive/2011/12/10/2282943.html 一致性Hash算法背景 一致性哈希算法在1997年由麻省理工学院的Karge ...
- JS实现打字机式字符输出效果
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- JavaScriptSerializer中日期序列化问题解决方案
JavaScriptSerializer中日期序列化问题解决方案 直接进入主题: class Student { public int age { get; set; } public DateTim ...
- Linux 下安装配置 JDK7
Linux 下安装配置 JDK7 配置环境(debian 7) 自从从Oracle收购Sun近三年来,已经有很多变化.早在8月,甲骨文将“Operating System Distributor Li ...
- ajax原理,验证码生成原理
什么是ajax AJAX:”Asynchronous JavaScript and XML” 中文意思:异步JavaScript和XML 指一种创建交互式网页应用的网页开发技术. 不是指一种单一的 ...
- ExtJS学习之路第五步:认识最常见组件Panel
文档中描述 Panel(面板)是一个容器,它具有特定的功能和结构部件,这使它成为面向应用用户界面的完美基石.面板,继承自Ext.container.Container,能够配置布局以及子组件(Chil ...
- Mac OS X中打zip包时去除.DS_Store等指定文件
在Finder中的Compress “…”很好用,但是也有烦恼的时候,经常打包会包含进来一些.DS_Store文件,.DS_Store是苹果系统中保存当前目录基本信息的文件,包括图标的位置,显示方式等 ...
- 安卓(Android)手机如何安装APK?
我大天朝的安卓手机只能在一个被阉割的APP市场里玩耍,有些APP可能需要直接安装APK文件.APK 是 Android Package (安卓安装包)安卓手机如何安装APK呢? 在电脑上下载安装APK ...
- glutBitmapCharacter及glBitmap在ATI显卡下无法正常显示的原因初探
最近家里台式机的老显卡烧了,所以更换了ATI的HD6450显卡,却发现glutBitmapCharacter及glBitmap都无法正常显示字符,nviDIA和intel的显卡则一切正常. 发邮件咨询 ...