6570 - 绕开一点(avoid)

题目描述

平面上有一张由整数坐标点构成的网格。你从 (0,0) 出发,要到达 (n,m)。

每一步只能向右或向上移动一个单位,也就是从 (u,v) 移动到 (u+1,v) 或 (u,v+1)。整条路线上的点都必须满足 0\le u\le n、0\le v\le m。

给定一个禁止经过的网格点 (x,y),求有多少条合法路线,并输出路线数量对 1000000007 取模的结果。

起点和终点也算路线经过的点;如果禁点是起点或终点,则没有合法路线。两条路线只要有一步的移动方向不同,就视为不同路线。

输入

输入一行四个整数 n,m,x,y,分别表示终点坐标与禁点坐标。

输出

输出一行一个整数,表示合法路线数量对 1000000007 取模的结果;没有合法路线时输出 0。

样例

输入

3 2 1 1

输出

4

输入

5 4 2 3

输出

86
说明

样例 1 解释

用 R 表示向右一步,U 表示向上一步。四条合法路线分别为:

RRRUU
RRURU
RRUUR
UURRR

例如,RRURU 对应 (0,0)\to(1,0)\to(2,0)\to(2,1)\to(3,1)\to(3,2),没有经过禁点 (1,1)。

如果前两步是 RU 或 UR,就会经过 (1,1),这样的路线不合法。

样例 2 解释

不考虑禁点时共有 126 条路线,其中 40 条经过 (2,3),所以合法路线有 86 条。

样例 3

见题目目录下的 avoid/3.in 与 avoid/3.ans。

该样例满足测试点 3,4 的约束条件。

样例 4

见题目目录下的 avoid/4.in 与 avoid/4.ans。

该样例满足测试点 7\sim10 的约束条件。

样例 5

见题目目录下的 avoid/5.in 与 avoid/5.ans。

该样例满足测试点 3,4 的约束条件。

数据范围

对于所有测试数据,保证 1\le n,m\le1000,0\le x\le n,0\le y\le m。

本题共 10 个测试点,每个测试点 10 分。

测试点编号n,m 的上界
1,220
3,4200
5,6500
7\sim101000

附件下载

avoid.zip (0.80 KB)

标签
题目参数
时间限制 1 秒
内存限制 512 MB
提交次数 3
通过人数 2
金币数量 2 枚
难度 基础


上一题 下一题