P1002过河卒
因为卒每到一个点上,就有两种情况。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过河卒的更多相关文章
- 洛谷 P1002过河卒
洛谷 P1002过河卒 题目描述 棋盘上AA点有一个过河卒,需要走到目标BB点.卒行走的规则:可以向下.或者向右.同时在棋盘上CC点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点 ...
- 洛谷P1002 过河卒 [2017年4月计划 动态规划15]
P1002 过河卒 题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之 ...
- P1002 过河卒【dp】
P1002 过河卒 题目描述 棋盘上AAA点有一个过河卒,需要走到目标BBB点.卒行走的规则:可以向下.或者向右.同时在棋盘上CCC点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制 ...
- 洛谷 P1002 过河卒 【棋盘dp】
题目链接:https://www.luogu.org/problemnew/show/P1002 题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点 ...
- 洛谷[P1002]过河卒
原题地址:https://www.luogu.org/problemnew/show/P1002 题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点 ...
- 洛谷P1002 过河卒 题解 动态规划
题目链接:https://www.luogu.com.cn/problem/P1002 题目大意 棋盘上\(A\)点有一个过河卒,需要走到目标\(B\)点.卒行走的规则:可以向下.或者向右.同时在棋盘 ...
- P1002 过河卒
题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为“马拦过河卒”. ...
- luogu P1002 过河卒
题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为“马拦过河卒”. ...
- 洛谷P1002 过河卒
关于蒟蒻的我,刚刚接触DP.... 那么就来做一道简单DP吧.... 首先先看题: 题目描述 棋盘上AA点有一个过河卒,需要走到目标BB点.卒行走的规则:可以向下.或者向右.同时在棋盘上CC点有一 ...
- P1002 过河卒 【递推、简单动规】
题目描述 棋盘上AA点有一个过河卒,需要走到目标BB点.卒行走的规则:可以向下.或者向右.同时在棋盘上CC点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为“马拦过河卒 ...
随机推荐
- 解决Myeclipse ctrl+h带来的困扰
解决Myeclipse ctrl+h带来的困扰 myeclipse的ctrl+h搜索功能给我们来查找文件定位类的方便,但同时也给我们带来两个困扰:一是搜出来的结果往往带着svn文件,一大推svn隐藏的 ...
- ifconfig 命令,改变主机名,改DNS hosts、关闭selinux firewalld netfilter 、防火墙iptables规则
ifconfig 命令用于查看网络相关的命令: 安装:yum install net-tools -y ifdown eth_name 关闭网卡 ifup eth_name 开启网卡 配 ...
- 【湖南师范大学2018年大学生程序设计竞赛新生赛 L】【HDOJ2476】【区间DP】
https://www.nowcoder.com/acm/contest/127/L L 小小粉刷匠 题目描述 "lalala,我是一个快乐的粉刷匠",小名一边快活地唱着歌,一边开 ...
- 【HDOJ1384】【差分约束+SPFA】
http://acm.hdu.edu.cn/showproblem.php?pid=1384 Intervals Time Limit: 10000/5000 MS (Java/Others) ...
- whmcs之全民idc
http://manage.cn.resellerclub.com/servlet/LogoutPassServlet 原教程例子:http://sharebar.org/1594.html (该教程 ...
- AangularJS入门总结三
(参考的资料) 1. 数据绑定的原理: (1) $watch 队列: 在DOM中每次绑定一些东西,就会往$watch队列中插入一条$watch: 每一个绑定到了DOM上的数据都会生成一个$watch ...
- 【BZOJ3514】 Codechef MARCH14 GERALD07加强版
hentai... 原题: N个点M条边的无向图,询问保留图中编号在[l,r]的边的时候图中的联通块个数. 对于100%的数据,1≤N.M.K≤200,000. 直接复制wulala的题解 wulal ...
- golang pprof 内存分析
use pprof to get application memory useage add code in your main funciton import ( "log" ...
- mysql再探
select子句及其顺序 select from where group by having order by limit 创建表 create table student(id int not nu ...
- benthos v1 的一些新功能
主要从视频文件截取,暂时github 上还没有很全的相关文档 v1目标 config lint processor error 处理 subprocess processor awk processo ...