传送

因为卒每到一个点上,就有两种情况。1.从左边过来。2.从上面过来。我们设f[i][j]为卒到[i][j]这个点的方案数,那么方程就是f[i][j]=f[i-1][j]+f[i][j-1],边界状态为f[i][0]=0,f[0][i]=0。哦,等等好像有什么不对的,如果马的控制点在边界上怎么办?那就从控制点开始,后面的f[i][0](或f[0][i])=0呗。but马有8个控制点,所以就要讨论8种情况。马的控制点为[x][y],[x-2][y+1],[x-2][y-1],[x-1][y-2],[x-1][y+2],[x+1][y-2],[x+1][y+2],[x+2][y-1],[x+2][y+1]。知道这些后,就可以写程序(暴力打表)了

打表如下:

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
long long x,y,n,m,f[][];
int main()
{
cin>>n>>m>>x>>y;
for(int i=;i<=n;i++)
{
if(y==)
{if(i<x)
f[i][]=;
}
if(y!=)
f[i][]=;
}
for(int i=;i<=m;i++)
{
if(x==)//滤掉马在边界上
{if(i<y)
f[][i]=;
}
if(x!=)
f[][i]=;
}
if(x-==)
{ if(y->)
{for(int i=y-;i<=m;i++)
f[][i]=;
}
else
{for(int i=y+;i<=m;i++)
f[][i]=;
}
}
if(x-==)
{if(y->)//分情况讨论
{for(int i=y-;i<=n;i++)
f[i][]=;
}
else
{for(int i=y-;i<=n;i++)
f[i][]=;
}
}
if(y-==)
{if(x->)
{for(int i=x-;i<=n;i++)
f[i][]=;
}
else
{for(int i=x+;i<=n;i++)
f[i][]=;
}
}
if(y-==)
{if(x->)
{for(int i=x-;i<=n;i++)
f[i][]=;
}
else
{for(int i=x+;i<=n;i++)
f[i][]=;
}
}//十分恶心的初始化
for(int i=;i<=n;i++)//核心程序开始
{
for(int j=;j<=m;j++)
{ if((i==x&&j==y)||(i==x-&&j==y-)||
(i==x-&&j==y+)||(i==x-&&j==y-)||(i==x-&&j==y+)
||(i==x+&&j==y-)||(i==x+&&j==y+)||(i==x+&&j==y-)||
(i==x+&&j==y+))//暴力打表(其实可以用bool标记一下,但我不会)
continue;
f[i][j]=f[i-][j]+f[i][j-];
}
}
cout<<f[n][m];
}//总之方程很好想,初始化很恶心

P1002过河卒的更多相关文章

  1. 洛谷 P1002过河卒

    洛谷 P1002过河卒 题目描述 棋盘上AA点有一个过河卒,需要走到目标BB点.卒行走的规则:可以向下.或者向右.同时在棋盘上CC点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点 ...

  2. 洛谷P1002 过河卒 [2017年4月计划 动态规划15]

    P1002 过河卒 题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之 ...

  3. P1002 过河卒【dp】

    P1002 过河卒 题目描述 棋盘上AAA点有一个过河卒,需要走到目标BBB点.卒行走的规则:可以向下.或者向右.同时在棋盘上CCC点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制 ...

  4. 洛谷 P1002 过河卒 【棋盘dp】

    题目链接:https://www.luogu.org/problemnew/show/P1002 题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点 ...

  5. 洛谷[P1002]过河卒

    原题地址:https://www.luogu.org/problemnew/show/P1002 题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点 ...

  6. 洛谷P1002 过河卒 题解 动态规划

    题目链接:https://www.luogu.com.cn/problem/P1002 题目大意 棋盘上\(A\)点有一个过河卒,需要走到目标\(B\)点.卒行走的规则:可以向下.或者向右.同时在棋盘 ...

  7. P1002 过河卒

    题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为“马拦过河卒”. ...

  8. luogu P1002 过河卒

    题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为“马拦过河卒”. ...

  9. 洛谷P1002 过河卒

    关于蒟蒻的我,刚刚接触DP....   那么就来做一道简单DP吧.... 首先先看题: 题目描述 棋盘上AA点有一个过河卒,需要走到目标BB点.卒行走的规则:可以向下.或者向右.同时在棋盘上CC点有一 ...

  10. P1002 过河卒 【递推、简单动规】

    题目描述 棋盘上AA点有一个过河卒,需要走到目标BB点.卒行走的规则:可以向下.或者向右.同时在棋盘上CC点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为“马拦过河卒 ...

随机推荐

  1. 解决Myeclipse ctrl+h带来的困扰

    解决Myeclipse ctrl+h带来的困扰 myeclipse的ctrl+h搜索功能给我们来查找文件定位类的方便,但同时也给我们带来两个困扰:一是搜出来的结果往往带着svn文件,一大推svn隐藏的 ...

  2. ifconfig 命令,改变主机名,改DNS hosts、关闭selinux firewalld netfilter 、防火墙iptables规则

    ifconfig 命令用于查看网络相关的命令: 安装:yum install net-tools -y  ifdown  eth_name  关闭网卡  ifup  eth_name   开启网卡 配 ...

  3. 【湖南师范大学2018年大学生程序设计竞赛新生赛 L】【HDOJ2476】【区间DP】

    https://www.nowcoder.com/acm/contest/127/L L 小小粉刷匠 题目描述 "lalala,我是一个快乐的粉刷匠",小名一边快活地唱着歌,一边开 ...

  4. 【HDOJ1384】【差分约束+SPFA】

    http://acm.hdu.edu.cn/showproblem.php?pid=1384 Intervals Time Limit: 10000/5000 MS (Java/Others)     ...

  5. whmcs之全民idc

    http://manage.cn.resellerclub.com/servlet/LogoutPassServlet 原教程例子:http://sharebar.org/1594.html (该教程 ...

  6. AangularJS入门总结三

    (参考的资料) 1. 数据绑定的原理: (1)  $watch 队列: 在DOM中每次绑定一些东西,就会往$watch队列中插入一条$watch: 每一个绑定到了DOM上的数据都会生成一个$watch ...

  7. 【BZOJ3514】 Codechef MARCH14 GERALD07加强版

    hentai... 原题: N个点M条边的无向图,询问保留图中编号在[l,r]的边的时候图中的联通块个数. 对于100%的数据,1≤N.M.K≤200,000. 直接复制wulala的题解 wulal ...

  8. golang pprof 内存分析

    use pprof to get application  memory  useage add code in your main funciton import ( "log" ...

  9. mysql再探

    select子句及其顺序 select from where group by having order by limit 创建表 create table student(id int not nu ...

  10. benthos v1 的一些新功能

    主要从视频文件截取,暂时github 上还没有很全的相关文档 v1目标 config lint processor error 处理 subprocess processor awk processo ...