QOJ.ac

QOJ

Time Limit: 1.0 s Memory Limit: 512 MB Total points: 100

#80. TRAX

Statistics

Snuke joue avec la tuile suivante (cette tuile est utilisée dans un jeu appelé TRAX) :

problem_80_0f21df77df755e43adbd0d96e19312ea.png

Snuke souhaite remplir une grille de $H \times W$ cases avec ces tuiles. Dans chaque case de la grille, il place une tuile dans l'une des quatre orientations suivantes :

problem_80_ec3c964389d04ee11d2ab89433afbe3e.png

Ces orientations sont numérotées de $1$ à $4$, comme sur l'image ci-dessus.

La disposition des tuiles doit respecter les contraintes suivantes :

  • Un arc rouge ne doit pas toucher un arc blanc.
  • La grille ne doit contenir aucun cycle (voir les exemples ci-dessous).
  • Pour chaque $i$ ($1 \le i \le N$), dans la case située à la $R_i$-ième ligne depuis le haut et à la $C_i$-ième colonne depuis la gauche, l'orientation de la tuile doit être $D_i$.

Par exemple, l'image suivante montre deux dispositions de tuiles non valides. La disposition de gauche contient un cycle blanc, et celle de droite contient un cycle rouge et un grand cycle blanc.

problem_80_00041d843effacc614e156a53f0769dd.png

Comptez le nombre de dispositions valides, modulo $10^9 + 7$.

Entrée

$$ \begin{array}{ccc} H & W \\ N \\ R_1 & C_1 & D_1 \\ \vdots \\ R_N & C_N & D_N \end{array} $$

  • $1 \le H, W \le 10^5$
  • $0 \le N \le 10^5$
  • $1 \le R_i \le H$
  • $1 \le C_i \le W$
  • $1 \le D_i \le 4$
  • Les couples $(R_i, C_i)$ sont deux à deux distincts.

Sortie

Affichez le nombre de dispositions valides, modulo $10^9 + 7$.

Exemples

Entrée 1

2 2
1
1 1 4

Sortie 1

4

Entrée 2

2 10
2
1 1 1
1 2 1

Sortie 2

0

Entrée 3

2015 1114
0

Sortie 3

711460824

Entrée 4

2 2
2
1 1 1
2 2 3

Sortie 4

0

Entrée 5

5 6
3
1 2 2
4 1 1
5 6 4

Sortie 5

12

Entrée 6

5 6
2
3 3 4
3 4 2

Sortie 6

39

Remarque

Voici les quatre dispositions valides pour l'exemple $1$ :

problem_80_700eb181efc1af8a53a07ab96973383a.png

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#495Editorial Open题解Milmon Download

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.