QOJ.ac

QOJ

时间限制: 3 s 内存限制: 512 MB 总分: 100 可 Hack ✓

#22828. Aqua

统计

Aqua to łamigłówka logiczna na prostokątnej planszy podzielonej na $r$ wierszy i $c$ kolumn. Wiersze są ponumerowane od $1$ do $r$ od dołu do góry, a kolumny od $1$ do $c$ od lewej do prawej. Komórkę w $i$-tym wierszu i $j$-tej kolumnie oznaczamy przez $(i,j)$.

Plansza jest podzielona pionowymi i poziomymi granicami na kilka obszarów spójnych przez wspólne boki. Dokładniej każdy obszar jest niepustym podzbiorem komórek planszy. Każda komórka należy do dokładnie jednego obszaru. Komórki obszaru tworzą składową spójną: między dowolnymi dwiema można przejść wyłącznie przez komórki tego obszaru, w każdym kroku przechodząc między komórkami mającymi wspólny bok.

problem_22828_cacd86d1830994c84de7c3ab2ee1c931.png

Rysunek A.1: Plansza o 6 wierszach, 7 kolumnach i 8 obszarach.

Twórca łamigłówki wlewa wodę do każdego obszaru przez jego górne krawędzie. Pod wpływem grawitacji woda opada do niższych komórek. Wlewa ją tak, aby spełnić wszystkie poniższe warunki:

  • Każda komórka jest całkowicie wypełniona wodą albo całkowicie pusta.

  • Obszar może być całkowicie pełny, całkowicie pusty albo częściowo wypełniony.

  • W każdym obszarze istnieje poziom $\ell$, poniżej którego wszystkie komórki są pełne, a powyżej którego wszystkie są puste. Innymi słowy, dla komórek $(r_1,c_1)$ i $(r_2,c_2)$ tego samego obszaru, gdzie $r_1 \le r_2$, jeśli $(r_2,c_2)$ jest pełna, to $(r_1,c_1)$ też musi być pełna.

  • Obszary traktuje się osobno i niezależnie. Powyższa reguła nie dotyczy zatem komórek z różnych obszarów.

Poniżej znajduje się przykład poprawnej planszy:

problem_22828_5f720c9c7f57466c69726353a8bd7d70.png

Rysunek A.2: Poprawna plansza.

Poniżej znajdują się przykłady niepoprawnych plansz:

problem_22828_4f402c835cbcd9482462c8867aac91fe.png

Rysunek A.3: Niepoprawna plansza — komórki $(5,5)$ i $(5,7)$ powinny być obie pełne albo obie puste, ponieważ są w tym samym obszarze i wierszu.

problem_22828_f029f0f5dfa1e3112e2fc7034574f2ca.png

Rysunek A.4: Niepoprawna plansza — komórki $(4,2)$, $(4,3)$ i $(4,4)$ są puste, ale należą do tego samego obszaru co komórka $(5,2)$, która jest pełna wody.

problem_22828_14512c5331df2bc2a7b70cf769d314fb.png

Rysunek A.5: Niepoprawna plansza — komórki nie mogą być częściowo wypełnione.

Twórca łamigłówki przestrzega powyższych zasad i zwraca też uwagę na liczbę pełnych komórek w każdym wierszu. W niektórych wierszach chce, aby ich liczba była równa ustalonej wartości, a na inne wiersze nie nakłada ograniczeń.

Policz sposoby wlania wody do obszarów spełniające wszystkie powyższe zasady i wymagania. Dwa sposoby są różne wtedy i tylko wtedy, gdy istnieje komórka pełna w jednym sposobie, a pusta w drugim.

Wejście

Pierwszy wiersz wejścia zawiera dwie liczby całkowite $r,c$ ($1 \le r,c \le 20$). Kolejne $r+1$ wierszy opisuje planszę według następujących reguł:

  • Każdy wiersz zawiera dokładnie $2\cdot c+1$ znaków; każdy jest spacją, podkreśleniem (_) lub pionową kreską (|).

  • Wszystkie znaki na parzystych pozycjach indeksu w pierwszym i ostatnim wierszu są podkreśleniami, przedstawiającymi górną i dolną granicę planszy.

  • Każde inne podkreślenie oznacza poziomą granicę obszaru między dwiema kolejnymi komórkami w tej samej kolumnie.

  • Pierwszy i ostatni znak każdego wiersza oprócz pierwszego jest pionową kreską, oznaczającą lewą i prawą granicę planszy.

  • Każda inna pionowa kreska oznacza pionową granicę obszaru między dwiema kolejnymi komórkami w tym samym wierszu.

Dla lepszego zrozumienia zobacz przykłady.

Z definicji:

  • Jeśli między dwiema kolejnymi komórkami w kolumnie nie ma poziomej granicy obszaru, należą one do tego samego obszaru.

  • Jeśli między dwiema kolejnymi komórkami w wierszu nie ma pionowej granicy obszaru, należą one do tego samego obszaru.

Ostatni wiersz zawiera $r$ liczb całkowitych $x_1,x_2,\ldots,x_r$ ($-1 \le x_i \le c$), określających wymagania dotyczące liczby pełnych komórek w każdym wierszu. Jeśli $x_i=-1$, wiersz $r-i+1$ może mieć dowolną liczbę komórek z wodą. W przeciwnym razie musi mieć dokładnie $x_i$ pełnych komórek.

Gwarantuje się, że plansza ma najwyżej 20 obszarów.

Wyjście

Wypisz dokładnie jedną liczbę całkowitą — liczbę poprawnych plansz spełniających warunki, modulo $10^9+7$.

Przykład

Wejście 1

6 7
 _ _ _ _ _ _ _ 
| |  _ _|  _  |
| | |_ _| |_| |
| |_ _ _|  _ _|
| |  _ _| |   |
| | |_ _| |   |
|_|_ _ _|_|_ _|
6 3 7 2 2 2

Wyjście 1

1

Uwagi

Pierwszy przykład odpowiada powyższemu rysunkowi A.2.

Wejście 2

2 3
 _ _ _ 
|     |
|_ _ _|
-1 -1

Wyjście 2

3

Wejście 3

3 3
 _ _ _ 
|  _  |
| | | |
|_|_|_|
-1 1 1

Wyjście 3

1

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.