P12634 [UOI 2020] Chessfield

题目背景

1s 256M

题目描述

Pani Annochka 最近参加了一家 IT 公司的面试。在面试中,她被赋予了一个*非常有趣的任务*: 女孩被给定一个被划分为方格的区域。每个方格的边长为 $1$,且每个方格被涂成白色或黑色。 我们称一个棋盘区域的大小为 $n$ 和 $m$,当它由高度为 $n$ 个单位、宽度为 $m$ 个单位的矩形组成。此外,所有这些矩形必须被涂成白色或黑色,且每个白色矩形只能与黑色矩形相邻,反之亦然——每个黑色矩形只能与白色矩形相邻。 例如,以下棋盘的大小为 $2$ 和 $3$(蓝色为坐标轴): ![](https://cdn.luogu.com.cn/upload/image_hosting/88zoek3f.png) 但以下这些不符合要求: ![](https://cdn.luogu.com.cn/upload/image_hosting/egfvlilp.png) 你可能已经注意到,大小为 $n$ 和 $m$ 的棋盘区域通常有很多种。挑战在于计算有多少种这样的棋盘区域。*不不不,这太简单了*。 Annochka 还知道该区域上的 $k$ 个方格及其颜色。Pani 需要找到满足以下条件的棋盘区域数量:这些方格在对应坐标处必须具有指定的颜色。帮助她完成这个任务! 更正式地说,给定 $k$ 组三元数:$x_i$, $y_i$, $c_i$,其中 $(x_i, y_i)$ 是方格左下角的坐标,$c_i$ 为 $0$ 表示该方格应为黑色,为 $1$ 表示该方格应为白色。你需要输出满足这些约束条件的大小为 $n$ 和 $m$ 的不同棋盘区域的数量。如果两个棋盘区域中至少有一个方格的颜色不同,则认为它们是不同的。

输入格式

第一行包含四个整数 $n$, $m$, $k$, $g$($1 \leq k \leq 10^5$, $1 \leq n, m \leq 10^9$, $0 \leq g \leq 4$)——每个矩形的高度、每个矩形的宽度、已知方格的数量以及组别编号。 接下来的 $k$ 行,每行包含三个整数 $x_i$, $y_i$, $c_i$($1 \leq x_i, y_i \leq 10^9$, $0 \leq c_i \leq 1$)——方格的坐标和颜色。注意,坐标可能**重复**。

输出格式

输出一个整数——满足给定约束条件的大小为 $n$ 和 $m$ 的不同棋盘区域的数量。

说明/提示

左侧是满足样例 $1$ 条件的唯一棋盘区域的示意图。 右侧是满足样例 $2$ 条件的 $8$ 种可能棋盘区域之一。 (蓝色为坐标轴,浅灰色表示应为白色的方格,深灰色表示应为黑色的方格)。 ![](https://cdn.luogu.com.cn/upload/image_hosting/b1ygrj64.png) - ($17$ 分):$1 \leq n, m, x_i, y_i, k \leq 100$; - ($24$ 分):$1 \leq n, m, k \leq 100$; - ($31$ 分):$1 \leq n \cdot m \leq 10^5$, $1 \leq k \leq 10^4$; - ($28$ 分):无额外限制。 翻译由 DeepSeek V3 完成