#P14431. [JOISC 2013] 有趣的图像收集 / Collecting Images is Fun
[JOISC 2013] 有趣的图像收集 / Collecting Images is Fun
题目描述
JOI 君非常喜欢收集大量图片,并拥有许多图像。最近,JOI 君发现自己因收集过多图片而导致硬盘容量略显不足。他没有购买新硬盘的预算,但删除已有的图片对他而言是极大的痛苦,因此他决定通过巧妙地压缩图片来减少存储空间。
每张图片由 行 列的正方形像素网格表示,共计 个像素。每个像素为白色或黑色。
JOI 君采用以下方法对这类图像进行压缩:
- 若图像内所有像素颜色相同,则仅记录该颜色。此时压缩后数据的大小为 。
- 否则,将图像分割为四个较小的子图像。若原图像为 行 列,则沿纵向和横向的中心线进行分割,得到四个 行 列的子图像。对这些较小的子图像递归应用相同的压缩方法。此时,压缩后数据的大小为四个子图像压缩后数据大小之和再加 。
JOI 君对这种方法是否能有效压缩图像感到不安,因此决定对多种图像进行实验。实验方法如下:
- 首先准备一张所有像素均为白色的图像。
- 对于 ,执行以下操作:若 ,则反转从上数第 行的 个像素的颜色;若 ,则反转从左数第 列的 个像素的颜色。即,记从上第 行、从左第 列的像素为 ,对于每个 ,当 时,对满足 的像素 执行颜色反转(白变黑,黑变白);当 时,对满足 的像素 执行颜色反转。
- 对于每个 ,在第 次操作结束后,调查按 JOI 君方法压缩该图像后所得数据的大小。
为了在实验中执行尽可能多的操作,需要高效计算压缩后数据的大小。
任务
给定表示图像大小的整数 、操作次数 以及 次操作的描述,编写程序计算每次操作结束后,按 JOI 君方法压缩图像所得数据的大小。
输入格式
从标准输入读取以下输入数据:
-
第 行包含两个以空格分隔的整数 ,表示图像大小为 行 列,且将执行 次操作。
-
接下来的 行描述操作指令。第 行()包含两个以空格分隔的整数 ( 且 ),表示第 次操作:若 则反转从上数第 行的所有像素颜色;若 则反转从左数第 列的所有像素颜色。
输出格式
向标准输出输出 行。第 行()应包含一个整数,表示第 次操作结束后,按 JOI 君方法压缩图像所得数据的大小。
2 3
0 1
1 2
0 3
13
17
21
提示
样例 1 解释
在这个例子中, 次操作按以下方式进行:
:::align{center}
:::
限制
所有输入数据满足以下条件:
子任务
子任务 1 [10 分]
满足以下条件:
子任务 2 [20 分]
满足以下条件:
子任务 3 [70 分]
无额外限制。
翻译由 DeepSeek V3 完成