QOJ.ac

QOJ

时间限制: 2.0 s 内存限制: 512 MB 总分: 100

#452. 更进一步

统计

考虑一个大小为 $n \times m$ 的表格,其中包含字符 “+” 和 “-”。对表格进行一次操作是指选择一个单元格,并将该单元格所在行和列的所有字符同时反转(该单元格本身也会被反转)。反转字符意味着将 “+” 替换为 “-”,反之亦然。

Vasya 想要将所有单元格都填满 “-”。为了实现这一目标,他使用了以下算法:

  • 如果所有单元格均为 “-”,则算法结束。
  • 否则,记录当前所有 “+” 的位置。假设它们为 $(r_1, c_1), (r_2, c_2), \dots, (r_k, c_k)$。之后,他对每个单元格 $(r_i, c_i)$ 执行一次操作,然后返回第 1 步。

Sasha 想知道 Vasya 是否能达到他的目标。如果是,他想知道 Vasya 在停止前总共会执行多少次操作。

输入格式

第一行包含三个整数 $n, m$ 和 $q$ ($1 \le n, m \le 10^5, 0 \le q \le 10^5$)。

接下来是初始配置的描述。接下来的 $q$ 行中,第 $i$ 行包含四个整数 $x_{i,1}, y_{i,1}, x_{i,2}$ 和 $y_{i,2}$ ($1 \le x_{i,1} \le x_{i,2} \le n, 1 \le y_{i,1} \le y_{i,2} \le m$)。它们定义了一个矩形,包含所有满足 $x_{i,1} \le x \le x_{i,2}$ 且 $y_{i,1} \le y \le y_{i,2}$ 的单元格 $(x, y)$。当且仅当单元格 $(x, y)$ 被包含在奇数个矩形中时,它初始为 “+”。

请参阅说明部分以获取进一步解释。

输出格式

如果 Vasya 永远无法完成操作,输出 “-1”。否则,输出他将执行的操作总数。

样例

样例输入 1

3 3 2
1 1 2 2
2 2 3 3

样例输出 1

6

样例输入 2

3 3 2
1 2 1 3
2 1 3 1

样例输出 2

-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.