1701: Шляхи ферзя

Перегляд у форматі PDF

Надіслати розв'язок

Бали: 45
Time limit: 2.0s
Memory limit: 250M

Author:
Problem type

У нас є сітка з \(H\) горизонтальними рядками і \(W\) вертикальними стовпцями клітин. Клітина (\(i,j\)) знаходиться в \(i\)-му рядку зверху та \(j\)-му стовпці зліва, є стіною, якщо \(S_{ij}\) дорівнює #, і дорогою, якщо \(S_{ij }\) є '.'. У клітині (1, 1) стоїть ферзь, шахова фігура. За один рух він може переміщати будь-яку кількість квадратів праворуч, вниз або по діагоналі в нижній правий бік по вільних клітинах, не перестрибуючи через стіни.

Скількома способами ферзь може пройти від клітини (1, 1) до клітини (\(H, W\))?

Знайдіть кількість за модулем (\(10^9 + 7\)).

Тут два шляхи переміщення вважаються різними тоді і тільки тоді, коли існує \(i\) такий, що положення ферзя після \(i\)-го ходу різне в цих двох шляхах.

Формат вхідних даних

Перший рядок містить цілі числа \(H, W\) (\(2 \le N \le 2000\))

Наступні  \(N\) рядків містять \(S_{ij}\) (\(S_{ij}\) = '.', '#', \(S_{11}=S_{HW}='.'\))

Формат вихідних даних

У вихідний потік виведіть шукану кількість шляхів.

Примітка

До прикладу 1:

Існує 10 шляхів, а саме:

  • (1,1)→(1,2)→(1,3)→(2,3)→(3,3)

  • (1,1)→(1,2)→(1,3)→(3,3)

  • (1,1)→(1,2)→(2,3)→(3,3)

  • (1,1)→(1,3)→(2,3)→(3,3)

  • (1,1)→(1,3)→(3,3)

  • (1,1)→(2,1)→(3,1)→(3,2)→(3,3)

  • (1,1)→(2,1)→(3,1)→(3,3)

  • (1,1)→(2,1)→(3,2)→(3,3)

  • (1,1)→(3,1)→(3,2)→(3,3)

  • (1,1)→(3,1)→(3,3)

Приклад вхідних даних

3 3
...
.#.
...

Приклад вихідних даних

10

Приклад вхідних даних

4 4
...#
....
..#.
....

Приклад вихідних даних

84

Приклад вхідних даних

8 10
..........
..........
..........
..........
..........
..........
..........
..........

Приклад вихідних даних

13701937

Коментарі

Ще немає коментарів.