A93166.「NOI2023」方格染色
提高+/省选-
NOI
通过率:0%
时间限制:1.00s
内存限制:512MB
题目描述
有一个 n 列 m 行的棋盘,共 n×m 个方格,我们约定行、列均从 1 开始标号,且第 i 列、第 j 行的方格坐标记为 (i,j)。初始时,所有方格的颜色均为白色。现在,你要对这个棋盘进行 q 次染色操作。
染色操作分为三种,分别为:
- 将一条横线染为黑色。具体地说,给定两个方格 (x1,y1) 和 (x2,y2),保证 x1≤x2,y1=y2,将这两个方格之间的所有方格(包括这两个方格)染为黑色。
- 将一条竖线染为黑色。具体地说,给定两个方格 (x1,y1) 和 (x2,y2),保证 x1=x2,y1≤y2,将这两个方格之间的所有方格(包括这两个方格)染为黑色。
- 将一条斜线染为黑色。具体地说,给定两个方格 (x1,y1) 和 (x2,y2),保证 x1≤x2,x2−x1=y2−y1,将这两个方格之间斜线上所有形如 (x1+i,y1+i)(0≤i≤x2−x1)的方格染为黑色。这种染色操作发生的次数不超过 5 次。
现在你想知道,在经过 q 次染色后,棋盘上有多少个黑色的方格。
输入格式
从文件 color.in 中读入数据。
输入的第一行包含一个整数 c,表示测试点编号。c=0 表示该测试点为样例。
输入的第二行包含三个正整数 n,m,q,分别表示棋盘的列、行和染色操作的次数。
接下来 q 行,每行输入五个正整数 t,x1,y1,x2,y2,其中 t=1 表示第一种染色操作,t=2 表示第二种染色操作,t=3 表示第三种染色操作。x1,y1,x2,y2 表示染色操作的四个参数。
输出格式
输出到文件 color.out 中。
输出一行包含一个整数,表示棋盘上被染为黑色的方格的数量。
输入输出样例
输入#1
0 5 5 3 1 1 3 5 3 2 3 1 3 5 3 1 1 5 5
输出#1
13
说明/提示
对于所有测试数据保证:1≤n,m≤109,1≤q≤105,1≤x1,x2≤n,1≤y1,y2≤m,且最多有 5 次第三种染色操作。
| 测试点编号 | n,m≤ | q≤ | 特殊性质 |
|---|---|---|---|
| 1∼5 | 300 | 300 | 无 |
| 6∼9 | 105 | 2000 | 无 |
| 10∼13 | 105 | 105 | A |
| 14∼17 | 105 | 105 | B |
| 18∼19 | 105 | 105 | 无 |
| 20 | 109 | 105 | 无 |
特殊性质 A:保证只有第一种染色操作。
特殊性质 B:保证只有第一种和第二种染色操作。